[英]Get sender email address with Python IMAP
我有這個 python IMAP 腳本,但我的問題是,每次我想獲取發件人的電子郵件地址(發件人)時,我總是得到發件人的名字,然后是他們的電子郵件地址:
例子:
Souleiman Benhida <souleb@gmail.com>
我怎樣才能提取電子郵件地址( souleb@gmail.com
)
我以前在 PHP 中這樣做過:
$headerinfo = imap_headerinfo($connection, $count)
or die("Couldn't get header for message " . $count . " : " . imap_last_error());
$from = $headerinfo->fromaddress;
但是,在python中我只能得到帶地址的全名,我怎么能單獨得到地址呢? 我目前使用這個:
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']
謝謝!
再多一步,使用email.utils :
email.utils.parseaddr(address)
將地址(應該是某些包含地址的字段(例如收件人或抄送)的值)解析為其組成的實名和電子郵件地址部分。 返回該信息的元組,除非解析失敗,在這種情況下返回 ('', '') 的 2 元組。
注意:最初引用rfc822
,現在已棄用。
to = email.utils.parseaddr(msg['cc'])
這對我有用。
我的外部庫https://github.com/ikvk/imap_tools讓您使用郵件而不是閱讀 IMAP 規范。
from imap_tools import MailBox, A
# get all emails from INBOX folder
with MailBox('imap.mail.com').login('test@mail.com', 'pwd', 'INBOX') as mailbox:
for msg in mailbox.fetch(A(all=True)):
print(msg.date, msg.from_, msg.to, len(msg.text or msg.html))
msg.from_, msg.to - 解析地址,如:'Sender@ya.ru'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.