简单的问题。我有一个C#应用程序,使用AE.Net.Mail库访问IMAP服务器以检索消息和附加文件。有时,当从Outlook发送邮件时,附件包含在名为winmail.dat的文件中。这是TNEF格式的文件。
我的应用程序是否有库或其他任何方式“解压缩”这些文件,以便我可以获取附件?
答案 0 :(得分:3)
我遇到了同样的问题,最终为.NET创建了一个名为OpaqueMail的完整电子邮件库。
它支持通过其TnefEncoding类解析TNEF编码的文件(例如Winmail.dat)。
// 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工具
从winmail.dat获取正文的方法: tnef -w --save-body winmail.dat 用于仅从winmail.dat文件中提取附件的用法: tnef winmail.dat
Tnef将正文/附件提取到我们正在运行此工具的当前目录中。否则我们可以给-C DIR,--directory = DIR来将它们保存到指定路径
答案 5 :(得分:-1)
TnefReader Class可能会有所帮助。