2011-03-02 372 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

相关问题