如何解析winmail.dat文件?

时间:2012-07-18 15:38:59

标签: c# .net tnef winmail.dat

简单的问题。我有一个C#应用程序,使用AE.Net.Mail库访问IMAP服务器以检索消息和附加文件。有时,当从Outlook发送邮件时,附件包含在名为winmail.dat的文件中。这是TNEF格式的文件。

我的应用程序是否有库或其他任何方式“解压缩”这些文件,以便我可以获取附件?

6 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,最终为.NET创建了一个名为OpaqueMail的完整电子邮件库。

它支持通过其TnefEncoding类解析TNEF编码的文件(例如Winmail.dat)。

Check out this example.

// 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);
}

答案 1 :(得分:1)

我发现this tool可以从命令行控制从TNEF文件中提取附件,但我真的更喜欢一个“正在运行”的库。

答案 2 :(得分:1)

我刚刚在MimeKit中实施了基于Microsoft的Exchange TNEF API的TNEF支持,因此可以完全访问其中包含的所有数据。

答案 3 :(得分:0)

快速搜索会导致:Yerase's TNEF Stream Reader

项目有源代码,你可以用C#重现它,也可以用一个小的C#(或更好的C ++ / CLI)包装器来使用它。

答案 4 :(得分:0)

如果用于Linux平台,则可以使用tnef工具

TNEF

从winmail.dat获取正文的方法: tnef -w --save-body winmail.dat 用于仅从winmail.dat文件中提取附件的用法: tnef winmail.dat

Tnef将正文/附件提取到我们正在运行此工具的当前目录中。否则我们可以给-C DIR,--directory = DIR来将它们保存到指定路径

答案 5 :(得分:-1)

TnefReader Class可能会有所帮助。