Python电子邮件头解析get_all()

2024-04-23 07:40:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python解析邮箱文件,在试图用get_all()获取所有“to:”标题时,偶然发现了一个奇怪的现象:

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:”标头,它的工作方式与我预期的不同:

^{pr2}$

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


Tags: 文件to标题forget电子邮件emailall
1条回答
网友
1楼 · 发布于 2024-04-23 07:40:33

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

我知道标准库中的email模块正在为python3.3重写,请参见http://www.bitdance.com/blog/。重写应该可以解决这样的问题;如果您有这个选项的话,pypiforpython3.2当前可以使用它:http://pypi.python.org/pypi/email。在

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

相关问题 更多 >