/// <summary> /// Get the items from successful response. /// </summary> /// <typeparam name="T">The type of item</typeparam> /// <param name="response">Response message from server.</param> /// <returns>Items contained in response.</returns> public static T[] GetItemsFromInfoResponse <T>(BaseResponseMessageType response) where T : ItemType, new() { T itemReturnedByServer = null; ArrayList arrayOfItems = new ArrayList(); ArrayOfResponseMessagesType responseMessages = response.ResponseMessages; foreach (ResponseMessageType responseMessage in responseMessages.Items) { if (responseMessage.ResponseCode != ResponseCodeType.NoError || responseMessage.ResponseClass != ResponseClassType.Success) { continue; } ItemInfoResponseMessageType itemRet = responseMessage as ItemInfoResponseMessageType; ArrayOfRealItemsType aorit = itemRet.Items; if (aorit.Items == null) { continue; } foreach (ItemType tempItem in aorit.Items) { itemReturnedByServer = tempItem as T; arrayOfItems.Add(itemReturnedByServer); } } return((T[])arrayOfItems.ToArray(typeof(T))); }
/// <summary> /// Get the items' id and change key from successful response. /// </summary> /// <param name="response">Response message from server.</param> /// <returns>Item ids contained in response.</returns> public static ItemIdType[] GetItemIdsFromInfoResponse(BaseResponseMessageType response) { ArrayList arrayOfItems = new ArrayList(); ArrayOfResponseMessagesType responseMessages = response.ResponseMessages; foreach (ResponseMessageType responseMessage in responseMessages.Items) { if (responseMessage.ResponseCode != ResponseCodeType.NoError || responseMessage.ResponseClass != ResponseClassType.Success) { continue; } ItemInfoResponseMessageType itemInfoResponseMessage = responseMessage as ItemInfoResponseMessageType; ArrayOfRealItemsType arrayOfRealItemsType = itemInfoResponseMessage.Items; if (arrayOfRealItemsType.Items == null) { continue; } foreach (ItemType tempItem in arrayOfRealItemsType.Items) { arrayOfItems.Add(tempItem.ItemId); } } return((ItemIdType[])arrayOfItems.ToArray(typeof(ItemIdType))); }
/// <summary> /// Отправляет электронное письмо /// </summary> /// <param name="subject">Тема письма</param> /// <param name="body">Текст письма</param> public static void SendMail(string subject, string body) { using (ExchangeServiceBinding bind = new ExchangeServiceBinding()) { bind.Credentials = new NetworkCredential(Username, Password, Domain); bind.Url = "https://" + Host + "/EWS/Exchange.asmx"; bind.RequestServerVersionValue = new RequestServerVersion(); bind.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1; CreateItemType createItemRequest = new CreateItemType { Items = new NonEmptyArrayOfAllItemsType(), MessageDispositionSpecified = true, MessageDisposition = MessageDispositionType.SendOnly }; MessageType message = new MessageType(); message.ToRecipients = new EmailAddressType[1]; message.ToRecipients[0] = new EmailAddressType(); message.ToRecipients[0].EmailAddress = ToRecipient; message.Subject = subject; message.Body = new BodyType(); message.Body.BodyType1 = BodyTypeType.Text; message.Body.Value = body; createItemRequest.Items.Items = new ItemType[1]; createItemRequest.Items.Items[0] = message; CreateItemResponseType createItemResponse = bind.CreateItem(createItemRequest); ArrayOfResponseMessagesType responseMessages = createItemResponse.ResponseMessages; ResponseMessageType[] responseMessage = responseMessages.Items; foreach (ResponseMessageType rmt in responseMessage.Where(rmt => rmt.ResponseClass == ResponseClassType.Error)) { throw new Exception(rmt.MessageText); } } }
/// <summary> /// Finds all Calendar Items for the current User's Mailbox. /// </summary> /// <returns></returns> //protected internal CalendarItemType[] FindCalendarItems() //{ // // Identify which folders to search. // DistinguishedFolderIdType[] parentFolderIds = new DistinguishedFolderIdType[1]; // parentFolderIds[0] = new DistinguishedFolderIdType(); // parentFolderIds[0].Id = DistinguishedFolderIdNameType.calendar; // return FindCalendarItems(parentFolderIds); //} protected internal CalendarItemType[] FindCalendarItems(DistinguishedFolderIdType[] parentFolderIds) { // Form the FindItem request. FindItemType findItemRequest = new FindItemType(); // Define the item properties that are returned in the response. ItemResponseShapeType itemProperties = new ItemResponseShapeType(); itemProperties.BaseShape = DefaultShapeNamesType.IdOnly; PathToUnindexedFieldType calendarIsRecurringFieldPath = new PathToUnindexedFieldType(); calendarIsRecurringFieldPath.FieldURI = UnindexedFieldURIType.calendarIsRecurring; PathToUnindexedFieldType calendarItemTypeFieldPath = new PathToUnindexedFieldType(); calendarIsRecurringFieldPath.FieldURI = UnindexedFieldURIType.calendarCalendarItemType; PathToUnindexedFieldType calendarStartFieldPath = new PathToUnindexedFieldType(); calendarStartFieldPath.FieldURI = UnindexedFieldURIType.calendarStart; PathToUnindexedFieldType calendarEndFieldPath = new PathToUnindexedFieldType(); calendarEndFieldPath.FieldURI = UnindexedFieldURIType.calendarEnd; //location //PathToUnindexedFieldType calendarLocation = new PathToUnindexedFieldType(); //calendarLocation.FieldURI = UnindexedFieldURIType.calendarLocation; //// body //PathToUnindexedFieldType itemBody = new PathToUnindexedFieldType(); //itemBody.FieldURI = UnindexedFieldURIType.itemBody; itemProperties.AdditionalProperties = new PathToUnindexedFieldType[] { calendarIsRecurringFieldPath, calendarItemTypeFieldPath, calendarStartFieldPath, calendarEndFieldPath }; findItemRequest.ItemShape = itemProperties; findItemRequest.ParentFolderIds = parentFolderIds; // Define the sort order of items. FieldOrderType[] fieldsOrder = new FieldOrderType[1]; fieldsOrder[0] = new FieldOrderType(); PathToUnindexedFieldType subjectOrder = new PathToUnindexedFieldType(); subjectOrder.FieldURI = UnindexedFieldURIType.calendarStart; fieldsOrder[0].Item = subjectOrder; fieldsOrder[0].Order = SortDirectionType.Ascending; findItemRequest.SortOrder = fieldsOrder; // Define the traversal type. findItemRequest.Traversal = ItemQueryTraversalType.Shallow; // Send the FindItem request and get the response. FindItemResponseType findItemResponse = Service.FindItem(findItemRequest); // Access the response message. ArrayOfResponseMessagesType responseMessages = findItemResponse.ResponseMessages; ResponseMessageType responseMessage = responseMessages.Items[0]; if (responseMessage is FindItemResponseMessageType) { FindItemResponseMessageType firmt = (responseMessage as FindItemResponseMessageType); FindItemParentType fipt = firmt.RootFolder; object obj = fipt.Item; if (obj is ArrayOfRealItemsType) { ArrayOfRealItemsType items = (obj as ArrayOfRealItemsType); if (items.Items != null) { List <CalendarItemType> calendarItems = new List <CalendarItemType>(items.Items.Length); foreach (ItemType item in items.Items) { CalendarItemType calendarItem = item as CalendarItemType; if (calendarItem != null) { calendarItems.Add(calendarItem); } } return(calendarItems.ToArray()); } return(new CalendarItemType[0]); } } return(null); }