2015-11-06 2 views
0

Я использую EWS для того, чтобы получить электронную почту, но когда я хочу, чтобы получить вложение я должен вызвать следующую функцию для каждого:Извлечение вложений из СЗПА сразу с помощью EWS Managed API 2.0

fileAttachment.Load(); 

Каждый раз, когда я это делаю, он идет на сервер. Можно ли сразу получить все вложения? Кроме того, возможно ли получить все вложения для нескольких почтовых отправлений?

ответ

1

Объект ExchangeService имеет метод GetAttachments, который в основном позволяет вам выполнять пакетный запрос GetAttachment. Так что если вы хотите, чтобы загрузить вложения на несколько сообщений сразу, что нужно сделать что-то вроде (loadpropertiesforitems первого вызова, который делает партию GetItem получить AttachmentIds)

 FindItemsResults<Item> fItems = service.FindItems(WellKnownFolderName.Inbox,new ItemView(10)); 
     PropertySet psSet = new PropertySet(BasePropertySet.FirstClassProperties); 
     service.LoadPropertiesForItems(fItems.Items, psSet); 
     List<Attachment> atAttachmentsList = new List<Attachment>(); 
     foreach(Item ibItem in fItems.Items){ 
      foreach(Attachment at in ibItem.Attachments){ 
       atAttachmentsList.Add(at); 
      } 
     } 
     ServiceResponseCollection<GetAttachmentResponse> gaResponses = service.GetAttachments(atAttachmentsList.ToArray(), BodyType.HTML, null); 
     foreach (GetAttachmentResponse gaResp in gaResponses) 
     { 
      if (gaResp.Result == ServiceResult.Success) 
      { 
       if (gaResp.Attachment is FileAttachment) 
       { 
        Console.WriteLine("File Attachment"); 
       } 
       if (gaResp.Attachment is ItemAttachment) 
       { 
        Console.WriteLine("Item Attachment"); 
       } 
      } 
     } 

Приветствия Глен

+0

я должен был установить 2.2 для этого, но я возьму это как ответ. –

Смежные вопросы