Получить тему и отправителя электронной почты, используя imaplib? - PullRequest
2 голосов
/ 02 июня 2011

Я получаю следующий ответ после выполнения кода, показанного под ответом. Как я могу проанализировать этот ответ, чтобы получить отправителя (Джон Смит) и предмет (тест)?

[('13010 (BODY[HEADER.FIELDS (SUBJECT FROM)] {57}', 'From: John Smith <jsmith@gmail.com>\r\nSubject: test\r\n\r\n'), ')']

-

conn.fetch(message, '(BODY[HEADER.FIELDS (SUBJECT FROM)])')

Ответы [ 2 ]

7 голосов
/ 02 июня 2011

Возможно вопрос / ответ здесь поможет. Попробуйте что-то вроде этого:

from email.parser import HeaderParser
data = conn.fetch(message, '(BODY[HEADER.FIELDS (SUBJECT FROM)])')
header_data = data[1][0][1]
parser = HeaderParser()
msg = parser.parsestr(header_data)

, а затем msg должен быть словарем.

3 голосов
/ 02 июня 2011

Вы можете попробовать это, чтобы получить информацию заголовка всех писем.

import imaplib
import email

obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('folder_name')
resp, data = obj.uid('FETCH', ','.join(map(str,uidl_list)) , '(BODY.PEEK[HEADER.FIELDS (From Subject)] RFC822.SIZE)')

Примечание: здесь 'uidl_list' - это список uid писем, тему которых вы хотите.

...