本文介紹如何使用EWS代理類調用Exchange的日歷
(1)首先生成代理類
ExchangeServiceBinding _ExchangeBinding = new ExchangeServiceBinding(); _ExchangeBinding.Credentials = new NetworkCredential(username, password, domain); _ExchangeBinding.Url = Helper.GetWebconfig("exchangewebservice");
(2)定義請求的屬性
請注意:在定義請求屬性時,一定要定義CalendarViewType屬性,默認的日歷返回是不含循環日歷的,
如果需要返回循環會議請求,就需要等譯CalendarView
FindItemType findItemRequest = new FindItemType(); ItemResponseShapeType itemProperties = new ItemResponseShapeType(); itemProperties.BaseShape = DefaultShapeNamesType.AllProperties; findItemRequest.ItemShape = itemProperties; //我們查找的是日歷 DistinguishedFolderIdType[] folderIDs = { new DistinguishedFolderIdType { Id = DistinguishedFolderIdNameType.calendar } };
findItemRequest.ParentFolderIds = folderIDs; //增加搜索的日歷范圍,紅色代碼要飯服務器返回循環會議 CalendarViewType cldview = new CalendarViewType(); cldview.StartDate = dt.AddDays(-2); cldview.EndDate = dt.AddDays(2); findItemRequest.Item = cldview; findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
(3)定義服務器返回的數據屬性
FindItemResponseType findItemResponse = _ExchangeBinding.FindItem(findItemRequest); ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages; ResponseMessageType[] responseMessage = responseMessages.Items; foreach (ResponseMessageType rmt in responseMessage) { #region 結果 FindItemResponseMessageType msgType = (rmt as FindItemResponseMessageType); if (msgType.RootFolder == null) continue; FindItemParentType parentType = msgType.RootFolder; object obj = parentType.Item; if (obj is ArrayOfRealItemsType) { ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType); if (items != null) { if (items.Items != null) { foreach (ItemType item in items.Items) { CalendarItemType calItem = item as CalendarItemType; DataRow row = table.NewRow(); row["roomid"] = 1; row["guid"] = guid; row["begintime"] = calItem.Start.AddHours(timezone); row["endtime"] = calItem.End.AddHours(timezone); row["location"] = calItem.Location; row["title"] = calItem.Subject; row["displayname"] = calItem.Organizer.Item.Name; if (row["endtime"].ToString() != "") { table.Rows.Add(row); } } } } } #endregion }