python3/email:使用嵌入式逗号解析电子邮件地址列表?

Hip*_*Man 1 split email-headers python-3.x

我知道如何使用email.utils.parseaddr()来解析电子邮件地址.但是,我想解析多个电子邮件地址的列表,例如此标头的地址部分:

Cc: "abc" <foo@bar.com>, "www, xxyyzz" <something@else.com>
Run Code Online (Sandbox Code Playgroud)

一般来说,我知道我可以拆分正则表达式\s*,\s*来获取单个地址,但在我的示例中,其中一个地址的名称部分包含逗号,因此此正则表达式将错误地拆分标题.

我知道如何手动编写基于状态机的代码以正确地将该地址拆分成片段,并且我也知道如何编写与每个电子邮件地址匹配的复杂正则表达式.我不是在写这样的代码时请求帮助.相反,我想知道是否有任何现有的python模块可以用来正确拆分这个电子邮件地址列表,所以我不必"重新发明轮子".

先感谢您.

dav*_*rds 8

借用这个问题的答案如何从python中的RFC 2822邮件头中提取多个电子邮件地址?

msg = 'Cc: "abc" <foo@bar.com>, "www, xxyyzz" <something@else.com>'

import email.utils

print(email.utils.getaddresses([msg]))
Run Code Online (Sandbox Code Playgroud)

生产:

[('abc', 'foo@bar.com'), ('www, xxyyzz', 'something@else.com')]
Run Code Online (Sandbox Code Playgroud)