Загрузка, сохранение и преобразование различных форматов электронных сообщений в C++

Загрузка сообщения с параметрами загрузки

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Email();
// Load Eml, html, mhtml, msg and dat file
System::SharedPtr<MailMessage> mailMessage = MailMessage::Load(dataDir + L"Message.eml", System::MakeObject<EmlLoadOptions>());
MailMessage::Load(dataDir + L"description.html", System::MakeObject<HtmlLoadOptions>());
MailMessage::Load(dataDir + L"Message.mhtml", System::MakeObject<MhtmlLoadOptions>());
MailMessage::Load(dataDir + L"Message.msg", System::MakeObject<MsgLoadOptions>());
// loading with custom options
System::SharedPtr<EmlLoadOptions> emlLoadOptions = System::MakeObject<EmlLoadOptions>();
emlLoadOptions->set_PrefferedTextEncoding(System::Text::Encoding::get_UTF8());
emlLoadOptions->set_PreserveTnefAttachments(true);
MailMessage::Load(dataDir + L"description.html", emlLoadOptions);
System::SharedPtr<HtmlLoadOptions> htmlLoadOptions = System::MakeObject<HtmlLoadOptions>();
htmlLoadOptions->set_PrefferedTextEncoding(System::Text::Encoding::get_UTF8());
htmlLoadOptions->set_ShouldAddPlainTextView(true);
htmlLoadOptions->set_PathToResources(dataDir);
MailMessage::Load(dataDir + L"description.html", emlLoadOptions);

Сохранение и конвертация сообщений

Aspose.Email упрощает преобразование любого типа сообщения в другой формат. Чтобы продемонстрировать эту функцию, код в этой статье загружает три типа сообщений с диска и сохраняет их в других форматах. Для сохранения сообщений в другие форматы можно использовать базовый класс SaveOptions и классы EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions для дополнительных настроек при сохранении MailMessage. Статья показывает, как использовать эти классы для сохранения примера электронной почты в следующем виде:

  • Формат EML.
  • Outlook MSG.
  • Формат MHTML.
  • Формат HTML.

Загрузка EML и сохранение в формате EML

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Email();
// Initialize and Load an existing EML file by specifying the MessageFormat
System::SharedPtr<MailMessage> mailMessage = MailMessage::Load(dataDir + L"Attachments.eml");
mailMessage->Save(dataDir + L"LoadAndSaveFileAsEML_out.eml", SaveOptions::get_DefaultEml());

Загрузка EML и сохранение в формате EML с сохранением оригинальных границ

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Email();
System::SharedPtr<MailMessage> mailMessage = MailMessage::Load(dataDir + L"Attachments.eml");
// Save as eml with preserved original boundares
System::SharedPtr<EmlSaveOptions> emlSaveOptions = System::MakeObject<EmlSaveOptions>(MailMessageSaveType::get_EmlFormat());
emlSaveOptions->set_PreserveOriginalBoundaries(true);
mailMessage->Save(dataDir + L"PreserveOriginalBoundaries_out.eml", emlSaveOptions);

Сохранение в формате EML с сохранением вложений TNEF

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Email();
System::SharedPtr<MailMessage> mailMessage = MailMessage::Load(dataDir + L"PreserveOriginalBoundaries.eml");
// Save as eml with preserved attachment
System::SharedPtr<EmlSaveOptions> emlSaveOptions = System::MakeObject<EmlSaveOptions>(MailMessageSaveType::get_EmlFormat());
emlSaveOptions->set_FileCompatibilityMode(Aspose::Email::Mail::FileCompatibilityMode::PreserveTnefAttachments);
mailMessage->Save(dataDir + L"PreserveTNEFAttachment_out.eml", emlSaveOptions);

Загрузка EML, сохранение в MSG

Следующий фрагмент кода показывает, как загрузить сообщение EML и преобразовать его в MSG с использованием соответствующей опции из SaveOptions.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Data directory for reading and writing files
System::String dataDir = RunExamples::GetDataDir_Email();
// Initialize and Load an existing EML file by specifying the MessageFormat
System::SharedPtr<MailMessage> eml = MailMessage::Load(dataDir + L"Message.eml");
// Save the Email message to disk in ASCII format and Unicode format
eml->Save(dataDir + L"AnEmail_out.msg", SaveOptions::get_DefaultMsgUnicode());

Сохранение MailMessage в формате MHTML

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Initialize and Load an existing EML file by specifying the MessageFormat
System::SharedPtr<MailMessage> eml = MailMessage::Load(dataDir + L"Message.eml");
eml->Save(dataDir + L"AnEmail_out.mthml", SaveOptions::get_DefaultMhtml());

Экспорт электронной почты в MHT с пользовательским смещением времени

Класс MailMessage предоставляет свойство TimeZoneOffset для установки пользовательского часового пояса при экспорте в MHT. Следующий фрагмент кода показывает, как экспортировать электронную почту в MHT с пользовательским часовым поясом.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MailMessage> eml = MailMessage::Load(dataDir + L"Message.eml");
// Set the local time for message date.
eml->set_TimeZoneOffset(System::TimeZone::get_CurrentTimeZone()->GetUtcOffset(System::DateTime::get_Now()));
// or set custom time zone offset for message date (-0800)
// eml.TimeZoneOffset = new TimeSpan(-8,0,0);
// The dates will be rendered by local system time zone.
System::SharedPtr<MhtSaveOptions> so = System::MakeObject<MhtSaveOptions>();
so->set_MhtFormatOptions(Aspose::Email::Mail::MhtFormatOptions::WriteHeader);
eml->Save(dataDir + L"ExportEmailToMHTWithCustomTimezone_out.mhtml", so);

Экспорт электронной почты в EML

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

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::String dataDir = RunExamples::GetDataDir_Email();
System::SharedPtr<MailMessage> msg = MailMessage::Load(dataDir + L"Message.eml");
msg->Save(dataDir + L"ExporttoEml_out.eml", SaveOptions::get_DefaultEml());