确定"来自" Maildir文件夹中的电子邮件地址

时间:2013-02-15 21:33:40

标签: python email maildir

我想查找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

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

有标准方法吗?

1 个答案:

答案 0 :(得分: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'])

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

mbox = mailbox.MailDir('/some/path')
uniq_emails = set(parseaddr(email['from'])[1] for email in mbox)