Создание и сохранение файлов MSG Outlook с использованием C++ Email API

Создание и сохранение файлов MSG

Aspose.Email поддерживает создание файлов сообщений Outlook (MSG). В этой статье объясняется, как:

  • Создать сообщения MSG.
  • Создать сообщения MSG с вложениями.
  • Создать сообщение MSG с телом в формате RTF.
  • Сохранить сообщение как черновик.
  • Работать со сжатием тела.

Создание и сохранение сообщений Outlook

Класс MailMessage имеет метод Save(), который может сохранять файлы MSG Outlook на диск или в поток. Приведенные ниже фрагменты кода создают экземпляр класса MailMessage, устанавливают свойства, такие как from, to, subject и body. Метод Save() принимает имя файла в качестве аргумента. Кроме того, сообщения Outlook могут быть созданы с сжатым телом RTF с использованием MapiConversionOptions. Для настройки создайте новое приложение Windows и добавьте ссылку на библиотеку Aspose.Email в проект.

  1. Создайте новый экземпляр класса MailMessage и установите свойства From, To, Subject и Body.
  2. Вызовите метод FromMailMessage класса MailMessage, который принимает объект типа MailMessage. Метод FromMailMessage() конвертирует MailMessage в MailMessage (MSG).
  3. Вызовите метод MapiMessage.Save(), чтобы сохранить файл MSG.

Напишите следующий код в событии click элемента управления кнопкой приложения Windows.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of the MailMessage class
System::SharedPtr<MailMessage> mailMsg = System::MakeObject<MailMessage>();
// Set from, to, subject and body properties
mailMsg->set_From(L"sender@domain.com");
mailMsg->set_To(L"receiver@domain.com");
mailMsg->set_Subject(L"This is test message");
mailMsg->set_Body(L"This is test body");
// Create an instance of the MapiMessage class and pass MailMessage as argument
System::SharedPtr<MapiMessage> outlookMsg = MapiMessage::FromMailMessage(mailMsg);
// Save the message (MSG) file
System::String strMsgFile = L"CreatingAndSavingOutlookMessages_out.msg";
outlookMsg->Save(dataDir + strMsgFile);

Создание файлов MSG с телом RTF

Вы также можете создавать файлы сообщений Outlook (MSG) с текстом в формате rich text (RTF) с помощью Aspose.Email. Тело RTF поддерживает форматирование текста. Создайте его, установив свойство MailMessage.HtmlBody. При преобразовании экземпляра MailMessage в экземпляр MailMessage тело HTML преобразуется в RTF. Таким образом, форматирование тела электронной почты сохраняется.

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Create an instance of the MailMessage class
System::SharedPtr<MailMessage> mailMsg = System::MakeObject<MailMessage>();
// Set from, to, subject and body properties
mailMsg->set_From(L"from@domain.com");
mailMsg->set_To(L"to@domain.com");
mailMsg->set_Subject(L"subject");
mailMsg->set_HtmlBody(L"<h3>rtf example</h3><p>creating an <b><u>outlook message (msg)</u></b> file using Aspose.Email.</p>");
System::SharedPtr<MapiMessage> outlookMsg = MapiMessage::FromMailMessage(mailMsg);
outlookMsg->Save(dataDir + L"CreatingMSGFilesWithRTFBody_out.msg");

Сохранение сообщения в статусе черновика

Электронные письма сохраняются как черновики, когда кто-то начал их редактировать, но хочет вернуться к ним для завершения позже. Aspose.Email поддерживает сохранение сообщения электронной почты в статусе черновика, устанавливая флаг сообщения. Ниже приведен пример кода для сохранения сообщения электронной почты Outlook (MSG) как черновика.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Change properties of an existing MSG file
System::String strExistingMsg = L"message.msg";
// Load the existing file in MailMessage and Change the properties
System::SharedPtr<MailMessage> msg = MailMessage::Load(dataDir + strExistingMsg, System::MakeObject<MsgLoadOptions>());
System::setter_add_wrap(msg.get(), &MailMessage::get_Subject, &MailMessage::set_Subject, L"NEW SUBJECT (updated by Aspose.Email)");
System::setter_add_wrap(msg.get(), &MailMessage::get_HtmlBody, &MailMessage::set_HtmlBody, L"NEW BODY (udpated by Aspose.Email)");
// Create an instance of type MapiMessage from MailMessage, Set message flag to un-sent (draft status) and Save it
System::SharedPtr<MapiMessage> mapiMsg = MapiMessage::FromMailMessage(msg);
mapiMsg->SetMessageFlags(Aspose::Email::Outlook::MapiMessageFlags::MSGFLAG_UNSENT);
mapiMsg->Save(dataDir + L"SavingMessageInDraftStatus_out.msg");

Последствия сжатия тела

Метод сжатия тела RTF может использоваться для генерации файлов MSG меньшего размера. Однако это приводит к более медленной работе. Чтобы создавать сообщения с улучшенной скоростью, установите флаг в false. Этот флаг, в свою очередь, влияет на созданные PST: меньшие файлы MSG приводят к меньшему PST, а большие файлы MSG возвращают более медленное создание PST.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MailMessage> message = MailMessage::Load(fileName);
System::SharedPtr<MapiConversionOptions> options = System::MakeObject<MapiConversionOptions>();
options->set_UseBodyCompression(true);
System::SharedPtr<MapiMessage> ae_mapi = MapiMessage::FromMailMessage(message, options);