【问题标题】:Python Email Header parsing get_all()Python 邮件头解析 get_all()
【发布时间】:2011-10-13 10:08:44
【问题描述】:

我正在使用 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:”标头,它不会像我预期的那样工作:

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

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

【问题讨论】:

    标签: python parsing email email-headers


    【解决方案1】:

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

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

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

    【讨论】:

    • 我的解决方法不如你的优雅,谢谢!我会留意你提到的博客,内容非常丰富。您认为该问题值得报告错误吗?
    • 如果你真的找不到提及它,是的,但我敢打赌这是已知的行为——这并不是电子邮件地址的不常见格式。
    猜你喜欢
    • 2023-03-30
    • 2015-07-26
    • 2022-12-17
    • 2016-06-09
    • 2020-09-18
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多