簡體   English   中英

使用 Python IMAP 獲取發件人電子郵件地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM