简单的问题。我有一个 C# 应用程序,它使用AE.Net.Mail库访问 IMAP 服务器来检索消息和附件。有时,当从 Outlook 发送邮件时,附件包含在名为 winmail.dat 的文件中。那是TNEF格式的文件。
我的应用程序是否有库或任何其他方式来“解压”这些文件,以便我可以获取附件?
简单的问题。我有一个 C# 应用程序,它使用AE.Net.Mail库访问 IMAP 服务器来检索消息和附件。有时,当从 Outlook 发送邮件时,附件包含在名为 winmail.dat 的文件中。那是TNEF格式的文件。
我的应用程序是否有库或任何其他方式来“解压”这些文件,以便我可以获取附件?
我遇到了同样的问题,最终为 .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);
}
我最近刚刚在基于 Microsoft 的 Exchange TNEF API 的MimeKit中实现了 TNEF 支持,从而允许完全访问其中包含的所有数据。
我发现这个工具可以从命令行控制以从 TNEF 文件中提取附件,但我真的更喜欢一个可以“在进程中”运行的库。
快速搜索导致:Yerase 的 TNEF Stream Reader
该项目有源代码,您可以在 C# 中重现它或制作一个小的 C#(或更好的 C++/CLI)包装器来使用它。
如果它适用于 Linux 平台,那么您可以使用 tnef 工具
从 winmail.dat 获取正文的用法: tnef -w --save-body winmail.dat 仅从 winmail.dat 文件中提取附件的用法: tnef winmail.dat
Tnef 将正文/附件提取到我们运行此工具的当前目录中。或者我们可以给 -C DIR, --directory=DIR 将它们保存到指定的路径
TnefReader 类可能会有所帮助。