Загрузка и сохранение сообщения электронной почты
Загрузка сообщения электронной почты
Загрузка из EML
Этот раздел описывает, как загрузить файл EML в объект MailMessage с помощью EmlLoadOptions class. Класс EmlLoadOptions предоставляет различные опции для настройки процесса загрузки файла EML, например, сохранения форматов вложенных сообщений или управления загрузкой вложений TNEF.
- Инициализируйте экземпляр EmlLoadOptions.
- Настройте параметры загрузки по необходимости.
- Используйте 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, позволяя контролировать кодировку, удаление подписи и многое другое.
- Создайте экземпляр EmlxLoadOptions.
- Настройте свойства по необходимости.
- Используйте 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‑контентом с параметрами управления ресурсами и добавления представлений в виде простого текста.
- Инициализируйте экземпляр HtmlLoadOptions.
- Настройте необходимые свойства.
- Используйте 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.
- Создайте экземпляр MhtmlLoadOptions.
- Настройте нужные свойства.
- Загрузите файл 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.
- Создайте экземпляр MsgLoadOptions.
- Установите нужные свойства для настройки загрузки.
- Загрузите файл 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. Этот класс предоставляет опции для управления кодировкой и удаления подписей в процессе загрузки.
- Создайте экземпляр TnefLoadOptions.
- Настройте свойства при необходимости.
- Используйте 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 класс можно использовать для этого. Следующие классы и методы могут быть использованы для обнаружения загруженного формата файла.
- FileFormatType Класс
- FileFormatInfo Класс
- FileFormatUtil Класс
- FileFormatUtil.DetectFileFormat(Stream) Method
- FileFormatUtil.DetectFileFormat(String) Method
Следующий фрагмент кода показывает, как обнаружить форматы файлов.
Сохранить и конвертировать сообщения
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 с возможностью настройки, но при этом гарантируя сохранение некоторых характеристик оригинального письма во время конвертации.
- Создайте экземпляр
MapiConversionOptionsи настроить его свойства. - Конвертировать
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, особенно при работе с большими сообщениями с богатым форматированием.