我想查找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
我需要的是电子邮件地址,适用于任何有效(或常见)“发件人:”字段格式。这肯定已经解决了很多次,所以我期待一个图书馆。我能找到的就是各种正则表达式。
有标准方法吗?
答案 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)