2012-10-19 1 views
1

J'ai lu les messages de mon compte Gmail avec le code suivant ci-dessous.Exécution du script pour la deuxième fois, les messages ne sont pas récupérés à partir du serveur de messagerie

import poplib 
pop_conn = poplib.POP3_SSL('pop.gmail.com') 
pop_conn.user('user')    # result: '+OK send PASS' 
pop_conn.pass_('password')  # result: '+OK Welcome.' 
print pop_conn.list()[1] 
pop_conn.quit() 

Il me montre 1 message comme prévu.
Cependant, si je lance ce script pour la deuxième fois, je reçois 0 message comme résultat. Sur le serveur, le message est toujours là et non lu.
Comment puis-je obtenir tous les messages exécutant également le script pour la deuxième fois?

Pour moi, il se comporte comme un client de messagerie qui ne télécharge pas le même courrier deux fois. Y at-il un drapeau pour forcer le programme à tout télécharger à nouveau? J'utilise python 2.7.x sur ubuntu 12.10

+0

peut-être vous pouvez élaborer un peu, fournir plus de contexte (par exemple quelle version python etc.). L'extrait a montré des œuvres bien pour moi: je reçois la même liste de messages électroniques à chaque fois. J'ai essayé avec python 2.7.x. – mjv

+0

@mjv merci de me faire savoir que cela fonctionne sur votre PC. Il devient curieux et curieux. J'utilise python 2.7.x sur Ubuntu 12.10 –

Répondre

1

Etes-vous sûr que c'est ce que vous faisiez quand c'est arrivé? Pour autant que je sache, il suffit d'utiliser list(), mais si vous utilisez retr() pour lire le contenu des messages, les serveurs POP3 marquent souvent le message et ne le renvoient plus sur d'autres connexions.

Vous pouvez essayer d'utiliser IMAP à la place, car il vous permet de spécifier le comportement plus en détail, par exemple. vous pouvez lui dire de ne pas marquer les messages comme vu et vous permet de les récupérer plus d'une fois. Google prend en charge IMAP et python a imaplib pour l'utiliser.

+0

après avoir échoué avec pop3, j'ai fait une solution imap qui a fonctionné. Je l'ai demandé ici, afin de comprendre pourquoi cela pourrait échouer. Maintenant, j'ai essayé d'exécuter ce script sur la même machine et maintenant ça marche chaque fois que ça ne me le rend pas clair. Je ne comprends pas. Au moment où j'ai posté la question, j'aurais peut-être essayé retr(), mais après je l'ai fait plusieurs fois: envoyez le message, exécutez l'extrait ci-dessus deux fois (et rien entre), pour le premier je reçois le message, pour la 2-ème fois - rien. upvote de mon côté, mais je vais attendre avec acceptation au cas où quelqu'un trouverait une solution à 100% –

+0

Eh bien c'est certainement bizarre. Dans ce cas, j'espère que quelqu'un pourra trouver une meilleure explication à cela; maintenant ça me dérange aussi. :) –

Questions connexes