Python Email Header解析get_all()

时间:2011-07-26 13:19:56

标签: python parsing email email-headers

我正在使用Python解析邮箱文件,并在尝试使用get_all()获取所有“收件人:”标头时偶然发现了一个奇怪的行为:

tos = message.get_all('to', [])
if tos:
    tos = getaddresses(tos)
    for to in tos:
        receiver = EmailInformant()
        receiver_email = to[1]

get_all()获取所有“to:”值,这些值以逗号分隔,afaik。然后getaddresses将单个接收器拆分为名称和电子邮件值。 对于以下“To:”标题,它无法正常工作:

To: example@test.de <example@test.de>

此处,电子邮件地址作为名称和电子邮件值提供,但解析器将其视为两个单独的“收件人:”条目,运行for循环两次。这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

解析电子邮件非常困难,因为有几个不同的规范,许多行为或定义不明确,以及不符合规范的实现。他们中的许多人在某些方面发生冲突。

我知道标准库中的电子邮件模块目前正在为Python 3.3重写,请参阅http://www.bitdance.com/blog/。重写应该解决这样的问题;如果你有这个选项,它目前在Python 3.2的pypi上可用:http://pypi.python.org/pypi/email

同时,尝试tos = set(getaddresses(tos))以消除重复。