我想找出 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
对于任何有效的(或常见的)“发件人:”字段格式,我只需要电子邮件地址。这一定已经解决了无数次,所以我期待一个图书馆。我只能找到各种正则表达式。
是否有标准方法?
请您参考如下方法:
email.utils.parseaddr是你的 friend :
>>> 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'])
然后,我想如果您只想要唯一的电子邮件地址,那么您可以直接在 mbox 上使用 set,例如:
mbox = mailbox.MailDir('/some/path')
uniq_emails = set(parseaddr(email['from'])[1] for email in mbox)
