Как получить вложения в ItemAttachment с помощью EWS Java - PullRequest
0 голосов
/ 07 января 2019

У меня есть почтовое вложение, где я хочу извлечь вложения из IteAttachment, который является частью вложения в электронное письмо. Я мог бы извлечь файлы из файлов.

Следует помнить, что ItemAttachment может содержать еще один ItemAttachment, поэтому я хочу, чтобы код, который будет работать рекурсивно, извлекает все вложения, пока не найдет больше ItemAttachment.

1 Ответ

0 голосов
/ 08 января 2019

Объяснение и образец кода взяты из официальной документации Microsoft

Получение вложений из электронной почты с помощью управляемого API EWS

В следующем примере кода показано, как получить объект EmailMessage с помощью используя метод Bind, затем выполните итерацию по коллекции вложений и вызывать метод FileAttachment.Load или ItemAttachment.Load для каждого приложение в зависимости от обстоятельств. Каждое вложение файла сохраняется в C: \ temp \ folder, и каждый элемент вложения загружается в память. За информацию о том, как сохранить вложение элемента, см. в разделе «Сохранить вложение». электронной почты с помощью управляемого API EWS.

В этом примере предполагается, что служба является допустимым объектом ExchangeService, этот itemId является ItemId сообщения, из которого будут вложения быть извлечены, и что пользователь был аутентифицирован на Exchange сервер.

public static void GetAttachmentsFromEmail(ExchangeService service, ItemId itemId)
{
    // Bind to an existing message item and retrieve the attachments collection.
    // This method results in an GetItem call to EWS.
    EmailMessage message = EmailMessage.Bind(service, itemId, new PropertySet(ItemSchema.Attachments));
    // Iterate through the attachments collection and load each attachment.
    foreach (Attachment attachment in message.Attachments)
    {
        if (attachment is FileAttachment)
        {
            FileAttachment fileAttachment = attachment as FileAttachment;
            // Load the attachment into a file.
            // This call results in a GetAttachment call to EWS.
            fileAttachment.Load("C:\\temp\\" + fileAttachment.Name);

            Console.WriteLine("File attachment name: " + fileAttachment.Name);
        }
        else // Attachment is an item attachment.
        {
            ItemAttachment itemAttachment = attachment as ItemAttachment;
            // Load attachment into memory and write out the subject.
            // This does not save the file like it does with a file attachment.
            // This call results in a GetAttachment call to EWS.
            itemAttachment.Load();
            Console.WriteLine("Item attachment name: " + itemAttachment.Name);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...