2013-02-08 4 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을 통해 이메일을 가져 오려고합니다. 모든 메시지는 머리글 (제목, 보낸 사람, 날짜)을 메시지에서 추출 할 수 없다는 점을 제외하고는 정상적으로 작동합니다. 위의 코드에서 message [0] [1]에 내 이메일이 들어 있습니다.python email.parser : 이메일에서 헤더 추출

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

누군가가 그것을 수행하는 방법을 알려 주시기 바랍니다 수 :

내가 헤더를 얻을 수 있어요 유일한 방법은 특별히 헤더, 다시 IMAP 서버를 요청하는 것입니다?

답변

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." 

msgemail.message.Message 개체입니다.

+0

정확히 내가 찾고 있었던 것이 었습니다. 고마워요 – user1968963

+0

가장 멋진 답변;) – Chris