1

我正在使用 Python 解析邮箱文件,并在尝试获取所有“To:”标头时偶然发现了一种奇怪的行为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>

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

4

1 回答 1

0

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

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

同时,尽量tos = set(getaddresses(tos))消除重复。

于 2011-07-26T13:29:54.990 回答