Работа с вложениями сообщений Outlook с использованием C++ Email Parser API

Управление вложениями с Aspose Outlook

Создание и сохранение файлов сообщений Outlook (MSG) объясняет, как создавать и сохранять сообщения, а также как создавать файлы MSG с вложениями. Эта статья объясняет, как управлять вложениями Microsoft Outlook с помощью Aspose.Email. Вложения из файла сообщения доступны и сохраняются на диск с использованием свойства Attachments класса MapiMessage. Свойство Attachments является коллекцией типа MapiAttachmentCollection.

Сохранение вложений из файла сообщения Outlook (MSG)

Чтобы сохранить вложения из файла MSG:

  1. Переберите коллекцию MapiAttachmentCollection и получите отдельные вложения.
  2. Для сохранения вложений вызовите метод Save() класса MapiAttachment.

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of MapiMessage from file
System::SharedPtr<MapiMessage> message = MapiMessage::FromFile(dataDir + fileName);
// Iterate through the attachments collection
{
auto attachment_enumerator = (message->get_Attachments())->GetEnumerator();
decltype(attachment_enumerator->get_Current()) attachment;
while (attachment_enumerator->MoveNext() && (attachment = attachment_enumerator->get_Current(), true))
{
// Save the individual attachment
attachment->Save(dataDir + attachment->get_FileName());
}
}

Удаление вложений

Библиотека Aspose Outlook предоставляет функциональность для удаления вложений из файлов сообщений Microsoft Outlook (.msg):

  • Вызовите метод RemoveAttachments(). Он принимает путь к файлу сообщения в качестве параметра. Он реализован как публичный статический метод, поэтому вам не нужно создавать объект.

Следующий фрагмент кода показывает, как удалить вложения с использованием библиотеки C++ Email Parser.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
MapiMessage::RemoveAttachments(dataDir + L"AttachmentsToRemove_out.msg");

Вы также можете вызвать статический метод класса MapiMessage DestoryAttachment(). Он работает быстрее, чем RemoveAttachment(), потому что метод RemoveAttachment() разбирает файл сообщения.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
MapiMessage::DestroyAttachments(dataDir + L"AttachmentsToDestroy_out.msg");

Добавление вложений MSG

Сообщение Outlook может содержать другие сообщения Microsoft Outlook во вложениях как обычные или встроенные сообщения. MapiAttachmentCollection предоставляет перегруженные члены метода Add для создания сообщений Outlook с обоими типами вложений.

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

Следующий фрагмент кода показывает, как сообщение MSG встроенное в файл MSG содержит PR_ATTACH_METHOD, значение которого равно 5.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MapiMessage> message = System::MakeObject<MapiMessage>(L"from@test.com", L"to@test.com", L"Subj", L"This is a message body");
System::SharedPtr<MapiMessage> attachMsg = MapiMessage::FromFile(dataDir + L"Message.msg");
message->get_Attachments()->Add(L"Weekly report.msg", attachMsg);
message->Save(dataDir + L"WithEmbeddedMsg_out.msg");