1

我想在 Maildir 文件夹中找出“发件人”地址的列表。使用以下脚本,它说明了在 From 中有效的各种格式:

import mailbox

mbox = mailbox.Maildir("/home/paul/Maildir/.folder") 
for message in mbox:
    print message["from"]

"John Smith" <jsmith@domain.com>
Tony <tony@domain2.com>
brendang@domain.net

对于任何有效(或常见)“发件人:”字段格式,我只需要电子邮件地址。这之前一定已经解决了无数次,所以我期待一个图书馆。我能找到的只是各种正则表达式。

有标准方法吗?

4

1 回答 1

6

email.utils.parseaddr是你的朋友:

>>> emails = """"John Smith" <jsmith@domain.com>
Tony <tony@domain2.com>
brendang@domain.net"""
>>> lines = emails.splitlines()
>>> from email.utils import parseaddr
>>> [parseaddr(email)[1] for email in lines]
['jsmith@domain.com', 'tony@domain2.com', 'brendang@domain.net']

所以你应该能够使用:

for message in mbox:
    print parseaddr(message['from'])

然后,我想如果您只想要唯一的电子邮件地址,那么您可以直接使用 a setmbox例如:

mbox = mailbox.MailDir('/some/path')
uniq_emails = set(parseaddr(email['from'])[1] for email in mbox)
于 2013-02-15T21:40:42.970 回答