Skip to main content
 首页 » 编程设计

python之确定 Maildir 文件夹中唯一的 "from"电子邮件地址

2025年05月04日30shanyou

我想找出 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)