tata |
2011-02-19 14:33 |
Exchange Server 2007 二次开发 (六)
获得某账户的状态: 1public static void GetUserAvailability(ExchangeServiceBinding esb) 2 { 3 // Identify the time to compare free/busy information. 4 Duration duration = new Duration(); 5 duration.StartTime = DateTime.Now; 6 duration.EndTime = DateTime.Now.AddHours(4); 7 8 // Identify the options for comparing free/busy information. 9 FreeBusyViewOptionsType fbViewOptions = new FreeBusyViewOptionsType(); 10 fbViewOptions.TimeWindow = duration; 11 fbViewOptions.RequestedView = FreeBusyViewType.MergedOnly; 12 fbViewOptions.RequestedViewSpecified = true; 13 fbViewOptions.MergedFreeBusyIntervalInMinutes = 35; 14 fbViewOptions.MergedFreeBusyIntervalInMinutesSpecified = true; 15 16 MailboxData[] mailboxes = new MailboxData[1]; 17 mailboxes[0] = new MailboxData(); 18 19 // Identify the user mailbox to review for free/busy data. 20 EmailAddress emailAddress = new EmailAddress(); 21 22 emailAddress.Address = "邮件地址"; 23 emailAddress.Name = String.Empty; 24 25 mailboxes[0].Email = emailAddress; 26 mailboxes[0].ExcludeConflicts = false; 27 28 // Make the request. 29 GetUserAvailabilityRequestType request = new GetUserAvailabilityRequestType(); 30 31[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] // Set the time zone of the request. 32[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone = new SerializableTimeZone(); 33[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.Bias = 480; 34[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.StandardTime = new SerializableTimeZoneTime(); 35[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.StandardTime.Bias = 0; 36[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.StandardTime.DayOfWeek = DayOfWeekType.Sunday.ToString(); 37[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.StandardTime.DayOrder = 1; 38[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.StandardTime.Month = 11; 39[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.StandardTime.Time = "02:00:00"; 40[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.DaylightTime = new SerializableTimeZoneTime(); 41[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.DaylightTime.Bias = -60; 42[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.DaylightTime.DayOfWeek = DayOfWeekType.Sunday.ToString(); 43[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.DaylightTime.DayOrder = 2; 44[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.DaylightTime.Month = 3; 45[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.TimeZone.DaylightTime.Time = "02:00:00"; 46[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] 47[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] // Add the mailboxes to the request. 48[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.MailboxDataArray = mailboxes; 49[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] 50[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] // Add the view options to the request. 51[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] request.FreeBusyViewOptions = fbViewOptions; 52[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] 53[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] try 54[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif[/img] { 55[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] // Send the request and get the response. 56[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] GetUserAvailabilityResponseType response = esb.GetUserAvailability(request); 57[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] 58[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] // Access free/busy information. 59[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] if (response.FreeBusyResponseArray.Length < 1) 60[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif[/img] { 61[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] throw new Exception("No free/busy response data available."); 62[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif[/img] } 63[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] else 64[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif[/img] { 65[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] foreach (FreeBusyResponseType fbrt in response.FreeBusyResponseArray) 66[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif[/img] { 67[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] if (fbrt.ResponseMessage.ResponseClass == ResponseClassType.Error) 68[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif[/img] { 69[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] Console.WriteLine(string.Format("Error: {0}", fbrt.ResponseMessage.MessageText)); 70[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif[/img] } 71[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] else 72[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif[/img] { 73[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] // Show the free/busy stream. 74[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] FreeBusyView fbv = fbrt.FreeBusyView; 75[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] Console.WriteLine(string.Format("Merged free/busy data: {0}", fbv.MergedFreeBusy)); 76[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif[/img] } 77[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif[/img] } 78[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif[/img] } 79[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif[/img] } 80[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] catch (Exception e) 81[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif[/img] { 82[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] // Perform error processing. 83[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] Console.WriteLine(e.Message); 84[img]http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif[/img] Console.ReadLine(); 85[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif[/img] } 86[img]http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif[/img] }
|
|