2017-07-12 2 views
0

Je peux obtenir le sujet de l'e-mail mais le corps résulte toujours à AUCUN. Essayé après cela link mais toutes les suggestions finissent par le même. Le corps imprime toujours comme AUCUN.Python poplib: récupération du corps du résultat de l'e-mail à AUCUN

import poplib 
from email import parser 
pop_conn = poplib.POP3_SSL('pop.gmail.com') 
pop_conn.user('my_email.com') 
pop_conn.pass_('my_password') 
#Get messages from server: 
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)] 
# Concat message pieces: 
messages = ['\n'.join(map(bytes.decode, mssg[1])) for mssg in messages] 
#Parse message intom an email object: 
messages = [parser.Parser().parsestr(mssg) for mssg in messages] 

for message in messages: 
    print (message['subject']) 
    print (message['body']) 
    print (message.get_payload()) 
pop_conn.quit() 

Répondre

0
import poplib 
from email import parser 
pop_conn = poplib.POP3_SSL('pop.gmail.com') 
pop_conn.user('my_email.com') 
pop_conn.pass_('my_password') 
#Get messages from server: 
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)] 
# Concat message pieces: 
messages = ['\n'.join(map(bytes.decode, mssg[1])) for mssg in messages] 
#Parse message intom an email object: 
messages = [parser.Parser().parsestr(mssg) for mssg in messages] 

for message in messages: 
    print (message['subject']) 
    print (message['from']) 
    for part in message.walk(): 
     if part.get_content_type(): 
      body = part.get_payload(decode=True) 
      print(body) 
pop_conn.quit() 

Cela a fait l'affaire. Cependant, il imprime une ligne droite. Quelqu'un sait comment imprimer par ligne si le corps du message est long?