Загрузка и сохранение сообщения электронной почты

Contents
[ ]

Загрузка сообщения электронной почты

Загрузка из EML

Этот раздел описывает, как загрузить файл EML в объект MailMessage с помощью EmlLoadOptions class. Класс EmlLoadOptions предоставляет различные опции для настройки процесса загрузки файла EML, например, сохранения форматов вложенных сообщений или управления загрузкой вложений TNEF.

  1. Инициализируйте экземпляр EmlLoadOptions.
  2. Настройте параметры загрузки по необходимости.
  3. Используйте MailMessage.Load() метод для загрузки файла EML с указанными параметрами.
using Aspose.Email;

// Initialize EmlLoadOptions
var loadOptions = new EmlLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Sets preferred encoding for the message
    PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
    PreserveTnefAttachments = true, // Control TNEF attachment loading
    RemoveSignature = false // Do not remove the signature
};

// Load the EML file
var eml = MailMessage.Load("file.eml", loadOptions);

Свойства EmlLoadOptions

  • PreferredTextEncoding: Устанавливает предпочтительную кодировку темы и тела сообщения. По умолчанию — null.
  • PreserveEmbeddedMessageFormat: Указывает, следует ли сохранять формат вложенных сообщений при загрузке. По умолчанию — false.
  • PreserveTnefAttachments: Управляет поведением загрузки вложений TNEF. По умолчанию — false.
  • RemoveSignature: Указывает, следует ли удалять подпись при загрузке. По умолчанию — false.

Сохранить формат вложенного сообщения

Загрузка сообщения с подписью/без подписи

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

Приведённый ниже пример кода показывает, как удалить подпись при загрузке сообщения:

var msg = MailMessage.Load(fileName, new EmlLoadOptions() { RemoveSignature = true});

Загрузка из EMLX

В следующем разделе рассматривается загрузка файла EMLX с помощью EmlxLoadOptions класс. Этот класс предоставляет параметры, аналогичные EmlLoadOptions, позволяя контролировать кодировку, удаление подписи и многое другое.

  1. Создайте экземпляр EmlxLoadOptions.
  2. Настройте свойства по необходимости.
  3. Используйте MailMessage.Load() метод загрузки файла EMLX.
using Aspose.Email;

// Instantiate EmlxLoadOptions
var loadOptions = new EmlxLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
    RemoveSignature = true // Remove signatures during loading
};

// Load the EMLX file
var emlx = MailMessage.Load("file.emlx", loadOptions);

Свойства EmlxLoadOptions

  • PreferredTextEncoding: Устанавливает предпочтительную кодировку темы и тела сообщения. По умолчанию — null.
  • PreserveEmbeddedMessageFormat: Указывает, следует ли сохранять формат вложенных сообщений. По умолчанию — false.
  • RemoveSignature: Указывает, следует ли удалять подпись при загрузке. По умолчанию — false.

Загрузка из HTML

Узнайте, как загрузить HTML‑файл в MailMessage с помощью HtmlLoadOptions класс. Этот класс специально разработан для работы с HTML‑контентом с параметрами управления ресурсами и добавления представлений в виде простого текста.

  1. Инициализируйте экземпляр HtmlLoadOptions.
  2. Настройте необходимые свойства.
  3. Используйте MailMessage.Load() метод загрузки HTML‑файла с указанными параметрами.
using Aspose.Email;

// Initialize HtmlLoadOptions
var loadOptions = new HtmlLoadOptions
{
    // Configure load options
    PathToResources = "resources/", // Path to directory containing resource files
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    ShouldAddPlainTextView = true // Add plain text view of the body
};

// Load the HTML file
var html = MailMessage.Load("file.html", loadOptions);

Свойства HtmlLoadOptions

  • PathToResources: Задает путь к каталогу, содержащему файлы ресурсов (например, изображения).
  • PreferredTextEncoding: Устанавливает предпочтительное кодирование для темы сообщения и тела. По умолчанию null.
  • PreserveEmbeddedMessageFormat: Определяет, сохранять ли формат вложенных сообщений. По умолчанию false.
  • ShouldAddPlainTextView: Указывает, добавлять ли представление сообщения в виде простого текста. По умолчанию false.

Загрузка из MHTML

Этот раздел объясняет, как загрузить файл MHTML с помощью MhtmlLoadOptions класс. Класс MhtmlLoadOptions предоставляет параметры для управления кодировкой, сохранения форматов вложенных сообщений и обработки вложений TNEF.

  1. Создайте экземпляр MhtmlLoadOptions.
  2. Настройте нужные свойства.
  3. Загрузите файл MHTML с помощью MailMessage.Load() метод.
using Aspose.Email;

// Create MhtmlLoadOptions
var loadOptions = new MhtmlLoadOptions
{
    // Set load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
    PreserveTnefAttachments = true, // Handle TNEF attachments
    RemoveSignature = false // Keep the signature
};

// Load the MHTML file
var mhtml = MailMessage.Load("file.mht", loadOptions);

Свойства MhtmlLoadOptions

  • MessageFormat: Представляет формат сообщения электронной почты, который может быть EML, MSG или MHTML. По умолчанию EML.
  • PreferredTextEncoding: Устанавливает предпочтительную кодировку темы и тела сообщения. По умолчанию — null.
  • PreserveEmbeddedMessageFormat: Определяет, сохранять ли формат вложенных сообщений. По умолчанию false.
  • PreserveTnefAttachments: Управляет поведением загрузки вложений TNEF. По умолчанию — false.
  • RemoveSignature: Указывает, следует ли удалять подпись при загрузке. По умолчанию — false.

Загрузка из MSG

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

  1. Создайте экземпляр MsgLoadOptions.
  2. Установите нужные свойства для настройки загрузки.
  3. Загрузите файл MSG, используя MailMessage.Load() метод.
using Aspose.Email;

// Create MsgLoadOptions
var loadOptions = new MsgLoadOptions
{
    // Set load options
    KeepOriginalEmailAddresses = true, // Preserve original email addresses
    PreferredTextEncoding = Encoding.UTF8, // Set preferred encoding
    PreserveRtfContent = true, // Keep RTF content in the message
    PreserveTnefAttachments = true, // Handle TNEF attachments
    RemoveSignature = false, // Keep the signature
    Timeout = 5000 // Set timeout to 5 seconds
};

// Load the MSG file
var msg = MailMessage.Load("file.msg", loadOptions);

Свойства MsgLoadOptions

  • KeepOriginalEmailAddresses: Указывает, сохранять ли оригинальные адреса электронной почты. По умолчанию false.
  • PreferredTextEncoding: Задает предпочтительное кодирование для темы сообщения и тела. По умолчанию null.
  • PreserveEmbeddedMessageFormat: Определяет, следует ли сохранять формат вложенных сообщений. По умолчанию false.
  • PreserveRtfContent: Указывает, сохранять ли содержимое тела RTF в MailMessage. По умолчанию false.
  • PreserveTnefAttachments: Управляет поведением загрузки вложений TNEF. По умолчанию false.
  • RemoveSignature: Определяет, удалять ли подпись при загрузке. По умолчанию false.
  • Тайм‑аут: Ограничивает время форматирования в миллисекундах во время конвертации. По умолчанию 3000 мс.

Загрузить из TNEF

Узнайте, как загрузить файл TNEF eml с помощью TnefLoadOptions class. Этот класс предоставляет опции для управления кодировкой и удаления подписей в процессе загрузки.

  1. Создайте экземпляр TnefLoadOptions.
  2. Настройте свойства при необходимости.
  3. Используйте MailMessage.Load() метод загрузки файла TNEF.
using Aspose.Email;

// Instantiate TnefLoadOptions
var loadOptions = new TnefLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
    RemoveSignature = true // Remove signatures during loading
};

// Load the TNEF file
var tnef = MailMessage.Load("file.eml", loadOptions);

Свойства TnefLoadOptions

  • MessageFormat: Представляет формат сообщения, например EML, MSG или MHTML. По умолчанию — EML.
  • PreferredTextEncoding: Устанавливает предпочтительную кодировку темы и тела сообщения. По умолчанию — null.
  • PreserveEmbeddedMessageFormat: Указывает, следует ли сохранять формат вложенных сообщений. По умолчанию — false.
  • RemoveSignature: Указывает, следует ли удалять подпись при загрузке. По умолчанию — false.

Определение форматов файлов

API Aspose.Email предоставляет возможность определить формат файла предоставленного сообщения. The DetectFileFormat метод FileFormatUtil класс можно использовать для этого. Следующие классы и методы могут быть использованы для обнаружения загруженного формата файла.

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

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

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

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

Сохранить в EML

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

Сохранить оригинальные границы

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

Сохранить вложения TNEF

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

Сохранить EML в MSG

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

Сохранить даты

Этот MsgSaveOptions класс позволяет сохранять исходное сообщение в файл Outlook Message (MSG), сохраняя даты. Приведённый ниже фрагмент кода показывает, как сохранить как MSG с сохранёнными датами.

Сохранить EML в MHTML

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

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.DefaultMhtml;
saveOptions.PreserveOriginalDate = false; // save a message date as UTC date

// Initialize and load an existing EML file
using (MailMessage mailMessage = MailMessage.Load(folderPath + "Message.eml"))
{
    mailMessage.Save(folderPath + "Message_out.mhtml", saveOptions);
}

Параметры конвертации

Этот MhtSaveOptions класс предоставляет дополнительные параметры для сохранения сообщений в формате MHTML. Перечисление MhtFormatOptions делает возможным запись дополнительной информации о письме в выходной MHTML. Можно записать следующие дополнительные поля:

  • WriteHeader – записывает заголовок письма в выходной файл.
  • WriteOutlineAttachments – записывает вложения плана (outline) в выходной файл.
  • WriteCompleteEmailAddress – записывает полный адрес электронной почты в выходной файл.
  • NoEncodeCharacters – не должно использоваться кодирование передачи символов.
  • HideExtraPrintHeader – скрывает дополнительный печатный заголовок в верхней части выходного файла.
  • WriteCompleteToEmailAddress – записывает полный адрес получателя в выходной файл.
  • WriteCompleteFromEmailAddress – записывает полный адрес отправителя в выходной файл.
  • WriteCompleteCcEmailAddress – записывает полные адреса электронной почты всех получателей в копии (Cc) в выходной файл.
  • WriteCompleteBccEmailAddress – записывает полный адрес электронной почты всех получателей в скрытой копии (Bcc) в выходной файл.
  • RenderCalendarEvent – записывает текст из события календаря в выходной файл.
  • SkipByteOrderMarkInBody – пишет байты маркера порядка байтов (BOM) в выходной файл.
  • RenderVCardInfo – пишет текст из VCard AlternativeView в выходной файл.
  • DisplayAsOutlook – отображает заголовок From.
  • RenderTaskFields – записывает определённые поля задачи в выходной файл.
  • None – Не указано значение.

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

Отрисовка событий календаря

Этот MhtFormatOptions.RenderCalendarEvent Отрисовывает события календаря в выходной MHTML. Ниже показан фрагмент кода, демонстрирующий рендеринг событий календаря при конвертации в MHTML.

Экспорт письма в MHT без встроенных изображений

Экспорт письма в MHT с пользовательским часовым поясом

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

Настройка шрифта

Сохранить EML в HTML

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

Сохранить без встроенных ресурсов

Сохранить EML в OFT

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

Конвертировать EML в MSG (MailMessage в MapiMessage)

Чтобы конвертировать MailMessage объект, загруженный из файла EML в MapiMessage объект, используйте MapiConversionOptions класс. Эта конверсия часто необходима, потому что эти два объекта служат разным целям и удовлетворяют различные потребности в обработке электронной почты. MapiMessage специально разработан для совместимости с Microsoft Outlook и Exchange Server, поскольку соблюдает формат Messaging Application Programming Interface (MAPI). Это гарантирует, что письма, конвертированные в файлы MSG, полностью совместимы с продуктами Microsoft, позволяя открывать, изменять и управлять ими напрямую в Outlook.

Эта конверсия также необходима, когда письма нужно архивировать, индексировать или обрабатывать хранилищами, требующими формат MAPI, такие как PST/OST, OLM, например. The MapiConversionOptions класс позволяет задавать дополнительные параметры, такие как сохранение исходного формата сообщения, сохранение оригинальных дат и сжатие тела RTF при конвертации. Следующий пример кода демонстрирует, как загрузить письмо из файла в формате .eml и преобразовать его в формат Outlook .msg с возможностью настройки, но при этом гарантируя сохранение некоторых характеристик оригинального письма во время конвертации.

  1. Создайте экземпляр MapiConversionOptions и настроить его свойства.
  2. Конвертировать MailMessage объект в MapiMessage объект, использующий настроенные параметры конвертации.
MailMessage eml = MailMessage.Load("email.eml", new EmlLoadOptions());

// Create an instance of MapiConversionOptions
var conversionOptions = new MapiConversionOptions
{
    // Configure MapiConversionOptions
    Format = OutlookMessageFormat.Unicode, // Use Unicode format for MSG
    PreserveEmbeddedMessageFormat = true, // Preserve the format of embedded messages
    PreserveOriginalAddresses = true, // Keep original email addresses
    PreserveOriginalDates = true, // Preserve original dates
    PreserveEmptyDates = false, // Generate new dates if original are empty
    RemoveSignature = false, // Do not remove the signature
    UseBodyCompression = true, // Enable RTF body compression
    ForcedRtfBodyForAppointment = false // Disable forced RTF body for appointments
};

// Convert MailMessage to MapiMessage
MapiMessage msg = MapiMessage.FromMailMessage(eml, conversionOptions);

Доступные свойства MapiConversionOptions

  • ASCIIFormat: Возвращает MapiConversionOptions настроено с OutlookMessageFormat как ASCII, с PreserveSignature установить в false и UseBodyCompression установить в false. Эта опция полезна, когда нужен простой ASCII формат конвертации.

  • UnicodeFormat: Возвращает MapiConversionOptions с OutlookMessageFormat установите в Unicode, и оба PreserveSignature и UseBodyCompression установить в false. Используйте эту опцию для более широкого поддерживания символов в файлах MSG.

  • ForcedRtfBodyForAppointment: При установке в true принудительно использует тело RTF для календарных встреч. Это полезно, если необходимо обеспечить совместимость с некоторыми почтовыми клиентами. По умолчанию true.

  • Format: Указывает формат вывода для файла MSG. Его можно задать как OutlookMessageFormat.ASCII или OutlookMessageFormat.Unicode, контролируя, будет ли конвертированное MSG использовать кодировку ASCII или Unicode.

  • PreserveEmbeddedMessageFormat: Определяет, сохранять ли оригинальный формат EML вложенных сообщений при конвертации в MapiMessage. Установка в true гарантирует, что вложенные письма сохранят свою оригинальную структуру. По умолчанию false.

  • PreserveEmptyDates: При установке в true сохраняет оригинальные даты сохранения и изменения из EML. В противном случае будут сгенерированы новые даты, если оригинальные пусты.

  • PreserveOriginalAddresses: Если установлено true, сохраняет оригинальные адреса электронной почты без проверки. Это полезно, когда адреса могут не соответствовать строгим стандартам, но их нужно сохранять как есть. По умолчанию false.

  • PreserveOriginalDates: Обеспечивает сохранение оригинальных дат отправки и получения во время процесса конвертации. Установка в true сохраняет эти даты для более точного исторического отображения.

  • RemoveSignature: Управляет тем, будет ли цифровая подпись, если она есть, удалена из сообщения во время конвертации. По умолчанию false, то есть подпись сохраняется, если явно не удалить.

  • UseBodyCompression: Включает сжатие тела RTF, если установлено true. Это может помочь уменьшить размер файла MSG, особенно при работе с большими сообщениями с богатым форматированием.