4

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

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

4

6 回答 6

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);
}
于 2013-08-22T22:47:10.553 回答
2

我最近刚刚在基于 Microsoft 的 Exchange TNEF API 的MimeKit中实现了 TNEF 支持,从而允许完全访问其中包含的所有数据。

于 2014-05-01T17:36:04.723 回答
1

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

于 2012-07-18T15:52:54.563 回答
0

快速搜索导致:Yerase 的 TNEF Stream Reader

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

于 2012-07-18T15:59:26.217 回答
0

如果它适用于 Linux 平台,那么您可以使用 tnef 工具

TNEF

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

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

于 2020-07-21T12:13:03.710 回答
-1

TnefReader 类可能会有所帮助。

于 2012-07-18T16:04:16.440 回答