Как сохранить ItemAttachments с помощью управляемого API EWS

Можно ли сохранить ItemAttachment? Для FileAttachment мы используем следующий код управляемого API EWS для сохранения,

   if(attachment is FileAttachment)
    {
      FileAttachment fAttachment = new FileAttachment();
      fAttachment.Load("D:\\Stream" + fAttachment.Name);
    }

А как насчет ItemAttachment? Как мы можем сохранить ItemAttachment вот так в указанном файле?


person user1891567    schedule 01.02.2013    source источник
comment
Какую версию Microsoft.Exchange.WebServices.dll вы используете?   -  person T.S.    schedule 08.04.2014


Ответы (1)


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

Для ItemAttachments вам нужно загрузить MimeContent для элемента, затем вы можете просто написать в файл/выход [.eml", ".msg"]:

if (attachment is FileAttachment)
{
    FileAttachment fileAttachment = attachment as FileAttachment;

    // Load attachment contents into a file.
    fileAttachment.Load(<file path>);
}
else // Attachment is an ItemAttachment (Email)
{
    ItemAttachment itemAttachment = attachment as ItemAttachment;

    // Load Item with additionalProperties of MimeContent
    itemAttachment.Load(EmailMessageSchema.MimeContent);

    // MimeContent.Content will give you the byte[] for the ItemAttachment
    // Now all you have to do is write the byte[] to a file
    File.WriteAllBytes(<file path>, itemAttachment.Item.MimeContent.Content);
}
person Eric D    schedule 21.01.2014
comment
Какую версию Microsoft.Exchange.WebServices.dll вы используете? - person T.S.; 08.04.2014
comment
Извините за задержку. Я использую управляемый API Microsoft EWS 2.0: информация: ‹msdn.microsoft.com/en-us/library/office/› Прямая ссылка на библиотеку: ‹microsoft.com/en-us/download/details.aspx?id=42022 - person Eric D; 16.04.2014
comment
Без проблем. Это itemAttachment.Load(EmailMessageSchema.MimeContent); то, чего мне все время не хватало. - person T.S.; 17.04.2014
comment
Причина в том, что когда вы изначально извлекаете элемент, он захватывает только базовые свойства (или пользовательский набор свойств, который вы устанавливаете). Любые другие свойства, которые вы хотите, должны быть загружены по запросу. - person Eric D; 17.04.2014