如何处理Microsoft Outlook的winmail.dat?还有其他意外吗?

8 投票
7 回答
5018 浏览
提问于 2025-04-11 19:45

我决定我真的不喜欢微软和他们的做法。请问你能告诉我怎么处理邮件中的winmail.dat吗?有没有什么jython库或者java库可以让我处理这个文件?

我刚刚完成了一个邮件处理程序,是用jython 2.2.1在java 5上写的。在最后的负载测试中,我发现本该是标准MIME格式的附件,现在却被搞成了一个讨厌的winmail.dat,这意味着很多不同的Outlook客户端在互联网上传播这个winmail.dat,所以我需要支持这个文件。因此,我的程序没法正确处理这些数据。

请你简单介绍一下winmail.dat是什么,以及它为什么会让我们烦恼。

还有什么其他意外情况可以预料到吗?我还需要注意些什么,目前标准的MIME邮件已经处理好了。还有其他的“惊喜”吗?

非常感谢你的时间。

7 个回答

3

请简单介绍一下winmail.dat是什么,以及它为什么会让我们感到烦恼。

kb138053

当用户从Exchange Windows或Outlook客户端发送邮件到互联网时,如果收件人的邮件客户端无法接收富文本格式(RTF)的消息,系统可能会自动在邮件末尾添加一个叫做Winmail.dat的文件附件。这个Winmail.dat文件包含了Exchange服务器的RTF信息,对于收件人来说,它可能会显示为一个二进制文件。对于没有使用Exchange服务器的收件人来说,这个文件是没有用的。

如果你进一步阅读我提到的kb,里面有说明Exchange管理员如何以及应该禁用对互联网的RTF支持。

6

话题已经关闭,但为了将来参考:Apache POI 项目(一个用于处理微软文档的Java API)正在推出一个新版本(3.8),这个版本可以解码TNEF文件。我测试过,效果很好,甚至是测试版也很不错。你可以在这里找到它。

如果你想用maven来使用这个工具(2016年6月 - 以后可能会有变化):

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.14</version>
    </dependency>
6

在这里阅读:
http://en.wikipedia.org/wiki/TNEF

这里有一个解析的工具包:
https://github.com/verdammelt/tnef

撰写回答