我正在用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:”标头,它的工作方式与我预期的不同:
在这里,电子邮件地址作为name和email值提供,但是解析器将其视为两个独立的“To:”条目,运行for循环两次。这是虫子吗?在
解析电子邮件是非常困难的,因为有几种不同的规范,许多行为是或定义不好的,并且实现不遵循规范。他们中的许多人在某些方面有冲突。在
我知道标准库中的email模块正在为python3.3重写,请参见http://www.bitdance.com/blog/。重写应该可以解决这样的问题;如果您有这个选项的话,pypiforpython3.2当前可以使用它:http://pypi.python.org/pypi/email。在
同时,尝试
tos = set(getaddresses(tos))
来消除重复。在相关问题 更多 >
编程相关推荐