2013-02-08 1 views
1
import sys, imaplib 
    from email.parser import HeaderParser 

mail = imaplib.IMAP4_SSL(SERVER, PORT) 
status, data = mail.search(None, 'ALL') 

for msg_id in data[0].split(): 
    status, message = mail.fetch(msg_id, '(RFC822)') 
    print message[0][1] 

mail.close() 
mail.logout() 

Я пытаюсь получить электронные письма из gmail через imap. Все работает нормально, за исключением того, что я не могу извлечь из сообщения заголовок (субъект, отправитель, дата). В приведенном выше коде сообщение [0] [1] содержит мое электронное письмо.python email.parser: извлечение заголовка по электронной почте

Единственный способ, которым я могу получить заголовок, чтобы запросить сервер IMap снова, в частности, для заголовка:

status, message = mail.fetch(msg_id, '(BODY[HEADER.FIELDS (SUBJECT FROM)])') 
parser = HeaderParser() 
header = parser.parsestr(message[0][1]) 
print header 

может кто-нибудь, пожалуйста, посоветовать, как это сделать?

ответ

8

Я предполагаю, что у вас есть полное электронное письмо, а не только тело сообщения.

raw_message = """From: Santa Claus <[email protected]> 
To: Some Dude <[email protected]> 
Subject: I have lost your presents. 

Dude, i am so sorry. 
""" 

import email 
msg = email.message_from_string(raw_message) 
print(msg['Subject']) # "I have lost your presents." 

msg является email.message.Message объектом.

+0

это именно то, что я искал. Большое спасибо – user1968963

+0

Самый крутой ответ когда-либо;) – Chris

Смежные вопросы