2013-05-22 41 views
1

我想用poplib模塊得到只有從消息郵件主題:獲取消息頭(主題)與poplib模塊蟒蛇

import poplib 
server ='pop3.live.com' 
port = 995 
login="[email protected]" 
pw="xxx" 
print "Connecting..." 
M = poplib.POP3_SSL(server,port) 
print "Connected to "+server 
M.user(login) 
M.pass_(pw) 
print login+" is authenticated." 
numMessages = len(M.list()[1]) 
for i in range(numMessages): 
    for j in M.retr(i+1)[1]: 
     print j 
M.quit() 

有什麼建議?在此先感謝

+0

這個問題/答案似乎回答你的問題[http://stackoverflow.com/questions/4908472/how-to-recieve-mail-using-python][1] [ 1]:http://stackoverflow.com/questions/4908472/how-to-recieve-mail-using-python – barny

+0

謝謝你巴尼 – Chahroud

回答

0

您需要使用email.message_from_bytes轉換來自字節和decode_header的電子郵件來解碼您的標頭。這是python 3.4的例子。在python 2代碼會有所不同。

#!/usr/bin/env python3 

import email, poplib 
from email.header import decode_header 

login = 'login' 
password = 'password' 
pop_server = 'gmail.com' 
pop_port = 995 

mail_box = poplib.POP3_SSL(pop_server, pop_port) 
mail_box.user(login) 
mail_box.pass_(password) 

num_messages = len(mail_box.list()[1]) 
for i in range(num_messages): 
    print(i, "message:") 

    raw_email = b"\n".join(mail_box.retr(i+1)[1]) 
    parsed_email = email.message_from_bytes(raw_email) 

    subject = decode_header(parsed_email['Subject']) 
    print(
     subject[0][0].decode(subject[0][1]) 
    ) 

mail_box.quit()