2012-06-06 6 views
1

J'essaye actuellement d'écrire un script qui reçoit des messages de mon compte gmail mais je remarque un problème. Si poplib parcourt un message dans ma boîte de réception, il ne le parcourra plus jamais. Voici mon codeLe module poplib et email ne relu pas un message s'il l'a déjà lu

import poplib, string, email 

user = "[email protected]" 
password = "password" 

message = "" 
mail = poplib.POP3_SSL('pop.gmail.com') 
mail.user(user) 
mail.pass_(password) 

iMessageCount = len(mail.list()[1]) 
message = "" 
msg = mail.retr(iMessageCount) 
str = string.join(msg[1], "\n") 
frmMail = email.message_from_string(str) 

for part in frmMail.walk(): 
    if part.get_content_type() == "text/plain": 
     print part.get_payload() 

mail.quit() 

Chaque fois que je lance ce script, il va au plus récent e-mail suivante et saute un peu plus de l'e-mail qui a été montré la dernière fois qu'il a été exécuté.

Répondre

1

Récupération d'un message avec mail.retr() définit l'indicateur vu pour ce message et il ne sera plus visible par mail.list() après mail.quit() a été appelé.

Si vous n'appelez pas mail.quit() vos messages resteront invisibles. BTW, Gmail prend en charge IMAP qui est généralement mieux que POP3.