Работа с вложениями сообщений

Разбор и сохранение вложений

Файлы сообщений Outlook могут содержать одно или несколько вложений. Aspose.Email позволяет разработчикам проходить по вложениям в файле MSG и сохранять их на диск. Эта тема описывает процесс. Также описывается, как встроить вложение.

Класс Aspose.Email MapiMessage используется для загрузки файла MSG с диска и предоставляет метод getAttachments(), который ссылается на коллекцию объектов MapiAttachment, связанных с файлом MSG. Объект MapiAttachment дополнительно предоставляет методы, которые выполняют действия с вложением.

Чтобы сохранить вложения в файле MSG на диск с оригинальным именем и расширением:

  1. Создайте экземпляр класса MapiMessage, чтобы загрузить файл MSG, используя статический метод Load().
  2. Вызовите метод getAttachments() класса MapiRecipient, чтобы получить ссылку на коллекцию объектов MapiAttachment, связанных с файлом MSG.
  3. Пройдите в цикле по MapiAttachmentCollection, чтобы отобразить содержание каждого объекта MapiAttachment через его публичные методы.
  4. Вызовите метод save() класса MapiAttachment, чтобы сохранить вложение на диск.  

Встраивание сообщений как вложений

Сообщение Microsoft Outlook может содержать другие сообщения Microsoft Outlook во вложениях либо в виде обычных сообщений, описанных выше, либо встроенных сообщений. Коллекция MapiAttachmentCollection предоставляет перегруженные члены метода add для создания сообщений Outlook с обоими типами вложений. Вложенные в файл MSG сообщения содержат PR_ATTACH_METHOD со значением 5.

Чтение встроенного сообщения из вложения

Вставка и замена вложений MSG

API Aspose.Email предоставляет возможность вставлять вложения по определенному индексу в родительском сообщении. Он также предоставляет возможность замены содержимого вложения другим вложением.

Вставить вложение MSG в конкретное место

API Aspose.Email предоставляет возможность вставить вложение MSG в родительский MSG, используя метод MapiAttachmentCollection.Insert().

Заменить содержимое встроенного вложения MSG

Это можно использовать для замены содержимого встроенного вложения новыми, используя метод Replace. Однако, его нельзя использовать для вставки вложения с PR_ATTACH_NUM = 4 (например) в коллекцию с collection.Count = 2.

Сохранение вложений из цифрово подписанного сообщения

API Aspose.Email предоставляет возможность получить или установить значение, указывающее будет ли расшифровываться ясно подписанное сообщение.

Переименование вложения в MapiMessage

Aspose.Email позволяет редактировать значение свойства DisplayName в вложениях MapiMessage.

Следующий пример кода демонстрирует, как обновить имена дисплеев первых и вторых вложений в загруженном сообщении Mapi:

MapiMessage msg = MapiMessage.load(fileName);
msg.getAttachments().get_Item(0).setDisplayName("Новое имя дисплея 1");
msg.getAttachments().get_Item(1).setDisplayName("Новое имя дисплея 2");

Проверка, является ли вложение встроенным или обычным

Разница между встроенными и обычными вложениями заключается в том, как они представлены в электронном письме. Встроенные вложения встраиваются в тело письма и могут быть просмотрены без необходимости открывать отдельный файл или что-либо загружать. Обычные вложения, с другой стороны, являются отдельными файлами, прикрепленными к письму, но не отображаются непосредственно в теле сообщения и должны быть загружены и открыты отдельно. Свойство MapiAttachment.IsInline класса MapiAttachment получает значение, указывающее, является ли вложение встроенным или обычным.

Следующий пример кода загружает сообщение электронной почты из файла и затем извлекает информацию о вложениях, в частности, выводит имя дисплея каждого вложения и является ли оно встроенным в сообщение или нет:

MapiMessage message = MapiMessage.load("fileName");

for (MapiAttachment attach : message.getAttachments()) {
    System.out.println(attach.getDisplayName() + ": " + attach.isInline());
}