Обработка вложений TNEF в сообщениях электронной почты

TNEF (Transport Neutral Encapsulation Format) — это проприетарный формат, используемый Microsoft Outlook для инкапсуляции богато оформленного контента во вложениях, обычно сохраняемых как winmail.dat. API Aspose.Email позволяет считывать сообщения электронной почты с вложениями TNEF и изменять их содержимое. Затем письмо может быть сохранено как обычное письмо или в том же формате, сохраняя вложения TNEF. В этой статье представлены различные примеры кода для работы с сообщениями, содержащими вложения TNEF. Статья также показывает, как создавать файлы TNEF EML из файлов Outlook MSG.

Читать сообщение с вложением TNEF

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

Читать сообщение без вложения TNEF

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

Загрузка и сохранение TNEF‑вложений

С помощью Aspose.Email для .NET вы можете напрямую загружать вложения TNEF в MapiAttachment объекте, используя путь к файлу или поток, а затем сохраняет объект в формате TNEF. Это позволяет создавать файлы winmail.dat или сохранять специфическое для Outlook форматирование в процессах работы с электронной почтой.

API предоставляет следующие члены в MapiAttachment класс:

Загрузить вложения TNEF

  • static MapiAttachment LoadFromTnef(string fileName) - Загружает вложение TNEF из файла .dat.

  • static MapiAttachment LoadFromTnef(Stream stream) - Загружает вложение TNEF из потока (например, MemoryStream или файловый поток).

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

Пример кода ниже демонстрирует, как извлечь вложение winmail.dat из сообщения электронной почты, сохранить его и повторно добавить в качестве вложения к сообщению:

// message.eml contains a winmail.dat attachment, but by default, the attachment is not preserved.
var msg = MapiMessage.Load("message.eml");

var ms = new MemoryStream();
msg.Attachments[0].SaveToTnef("winmail.dat");

ms.Position = 0;
var fromtnefAttachment = MapiAttachment.LoadFromTnef(ms);
msg.Attachments.Add(fromtnefAttachment);

fromtnefAttachment = MapiAttachment.LoadFromTnef("winmail.dat");
msg.Attachments.Add(fromtnefAttachment);

Обновить ресурсы во вложении TNEF

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

Добавить вложение к сообщению TNEF

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

Создание TNEF‑EML из MSG

Сообщения Outlook MSG иногда содержат информацию, такую как таблицы и стили текста, которые могут быть искажены при конвертации в EML. Создание сообщений TNEF из таких файлов MSG позволяет сохранять форматирование и даже отправлять такие сообщения через почтовые клиенты, сохраняющие форматирование. The MailConversionOptions.ConvertAsTnef свойство используется для этого. Следующий фрагмент кода показывает, как создать TNEF EML из MSG.

Для создания TNEF можно использовать следующий пример кода.

Определить сообщения в формате TNEF

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

Определить вложения в формате TNEF

Этот Attachment.IsTnef свойство позволяет определить, является ли вложение сообщения форматом TNEF.

var eml = MailMessage.Load(fileName);

foreach (attachment in eml.Attachments)
{
    Console.WriteLine($"Is Attachment TNEF?: {attachment.IsTnef}");
}