Как я могу разобрать файл winmail.dat?

Простой вопрос У меня есть приложение C#, которое обращается к серверу IMAP с помощью библиотеки AE.Net.Mail для получения сообщений и вложенных файлов. Иногда, когда сообщение отправляется из Outlook, вложения содержатся в файле с именем winmail.dat. Это файл в формате TNEF.

Есть ли в моем приложении библиотека или другой способ "распаковать" эти файлы, чтобы я мог получить вложения?

5 ответов

Решение

Я нашел этот инструмент, которым можно управлять из командной строки для извлечения Attacheemnts, из файла TNEF, но я действительно предпочел бы библиотеку, которая будет работать "в процессе".

У меня возникла та же проблема, и в итоге я создал целую библиотеку электронной почты для.NET под названием OpaqueMail.

Он поддерживает синтаксический анализ файлов в формате TNEF (например, Winmail.dat) через класс TnefEncoding.

Проверьте этот пример.

// Instantiate a TNEF Encoding object to process the byte array "tnefEncoddedBytes".
TnefEncoding tnefEncoding = new TnefEncoding(tnefEncodedBytes);

// Loop through the TNEF-encoded attachments, outputting their names, content types, and sizes.
foreach (MimePart mimePart in tnefEncoding.MimeAttachments)
{
    Console.WriteLine("MIME Part Name: " + mimePart.Name);
    Console.WriteLine("MIME Part Content Type: " + mimePart.ContentType);
    Console.WriteLine("MIME Part Size: " + mimePart.BodyBytes.Length);
}

Я только недавно реализовал поддержку TNEF в MimeKit, который основан на Microsoft Exchange TNEF API, таким образом предоставляя полный доступ ко всем данным, содержащимся в нем.

Если это для платформы Linux, вы можете использовать инструмент tnef

TNEF

Использование для получения тела из файла winmail.dat: tnef -w --save-body winmail.dat Использование для извлечения только вложений из файла winmail.dat: tnef winmail.dat

Tnef извлекает Body/atatchments в наш текущий каталог, в котором мы запускаем этот инструмент. Или мы могли бы указать -C DIR, --directory=DIR, чтобы сохранить их по указанному пути

Быстрый поиск приводит к этому: читатель потока TNEF Yerase

У проекта есть исходный код, вы можете либо воспроизвести его в C#, либо сделать небольшую оболочку C# (или лучше C++/CLI) для его использования.

Класс TnefReader может помочь.

Другие вопросы по тегам