2011-03-02 216 views
1

我有這個python IMAP腳本,但我的問題是,每次我想要獲取發件人的電子郵件地址時,我總是會收到發件人的名字,然後是他們的電子郵件地址:使用Python獲取發件人的電子郵件地址IMAP

例子:

Souleiman Benhida <[email protected]> 

我如何才能提取電子郵件地址([email protected]

我這樣做過,在PHP中:

$headerinfo = imap_headerinfo($connection, $count) 
    or die("Couldn't get header for message " . $count . " : " . imap_last_error()); 
$from = $headerinfo->fromaddress; 

但是,在python中,我只能得到全名w /地址,我怎樣才能得到地址?我目前使用這個:

typ, data = M.fetch(num, '(RFC822)') 
mail = email.message_from_string(data[0][1]) 
headers = HeaderParser().parsestr(data[0][1]) 
message = parse_message(mail) #body 
org = headers['From'] 

謝謝!

回答

11

只需一個步驟,使用email.utils

email.utils.parseaddr(address)

解析地址 - 它應該是一些含地址字段的值,例如或抄送 - 成其組成實名和電子郵件地址部分。返回該信息的元組,除非解析失敗,在這種情況下返回2元組('','')。

注意:最初引用的rfc822,現在已被棄用。

+0

+1您可能還想提到rfc822自2.3開始已被棄用,並且parseaddr的新家是email.utils.parseaddr。 – 2011-03-03 00:14:47

+0

@Jarret:絕對。我將進行編輯。 – dkarp 2011-03-03 00:31:49

+0

我使用Python 2.6,這個代碼還能工作嗎? – Souleiman 2011-03-03 01:05:00

相關問題