Получите адрес электронной почты отправителя с помощью Python IMAP - PullRequest
4 голосов
/ 03 марта 2011

У меня есть этот скрипт 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']

Спасибо!

1 Ответ

15 голосов
/ 03 марта 2011

Еще один шаг, используя email.utils :

email.utils.parseaddr(address)

Разбор адреса - который должен быть значением некоторого содержащего адрес поля, такого как To или Cc - в составляющие его части реального имени и адреса электронной почты. Возвращает кортеж этой информации, если анализ не завершился неудачей, и в этом случае возвращается 2 кортежа ('', '').

Примечание. Первоначально на него ссылались rfc822, который теперь устарел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...