2013-05-22 3 views
1

Je veux seulement obtenir le sujet d'un courrier de message en utilisant poplib:Get-tête du message (sujet) avec python 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() 

Toutes les suggestions? Merci d'avance

+0

Cette question/réponse semble répondre à votre question [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

merci Barny – Chahroud

Répondre

0

Vous devez utiliser email.message_from_bytes pour convertir les e-mails à partir d'octets et decode_header pour décoder vos en-têtes. C'est python 3.4 exemple. Dans python 2 le code sera différent.

#!/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() 
Questions connexes