如何用Python解析winmail.dat

11 投票
1 回答
3089 浏览
提问于 2025-04-18 18:45

我正在从服务器上提取带附件的邮件,并根据一些标准把它们放到不同的文件夹里。对于那些用纯文本格式发送的邮件,这没什么问题。但是大家都知道,如果邮件是用富文本格式发送的,附件就会被转换成winmail.dat格式。

我试过使用一个叫做tnefparse的模块,但没有成功,因为我在网上找不到任何文档或示例。

有没有人能提供一些示例,教我如何使用tnefparse或者其他Python模块来读取和转换winmail.dat附件?

1 个回答

13

从命令行使用 tnefparse 非常简单。

首先,你需要通过 pip 安装它。

pip install tnefparse

要从 winmail.dat 文件中提取附件,只需运行以下命令:

tnefparse -a winmail.dat

如果你想在自己的 Python 代码中使用这个库,只需参考 tnefparse 的命令行实现,这个代码非常容易理解。总之,这里有一段示例代码,可以将 winmail.dat 中的所有附件提取到当前工作目录:

import sys
from tnefparse.tnef import TNEF, TNEFAttachment, TNEFObject
from tnefparse.mapi import TNEFMAPI_Attribute
t = TNEF(open("winmail.dat").read(), do_checksum=True)
for a in t.attachments:
    with open(a.name, "wb") as afp:
        afp.write(a.data)
sys.exit("Successfully wrote %i files" % len(t.attachments))

撰写回答