Создание и сохранение файлов 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 в проект.
- Создайте новый экземпляр класса MailMessage и установите свойства From, To, Subject и Body.
- Вызовите метод FromMailMessage класса MailMessage, который принимает объект типа MailMessage. Метод FromMailMessage() конвертирует MailMessage в MailMessage (MSG).
- Вызовите метод 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); |