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

必要なのは、有効な (または一般的な) "From:" フィールド形式の電子メール アドレスだけです。これは何億回も前に解決されたに違いないので、ライブラリを期待していました。私が見つけることができるのは、さまざまな正規表現だけです。

標準的なアプローチはありますか?

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'])

次に、一意のメールアドレスだけが必要な場合は、set直接 over を使用できますmbox。たとえば、次のようになります。

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