Obtenez uniquement les NOUVEAUX e-Mails imaplib et python
C'est une plus petite partie d'un projet plus vaste. J'ai besoin que des e-mails non lus et analyser les en-têtes. Comment puis-je modifier le script suivant pour ne recevoir que les e-mails non lus?
conn = imaplib.IMAP4_SSL(imap_server)
conn.login(imap_user, imap_password)
status, messages = conn.select('INBOX')
if status != "OK":
print "Incorrect mail box"
exit()
print messages
J'ai oublié de demander aussi le corps de l'email.
OriginalL'auteur David Neudorfer | 2012-11-03
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela fera l'affaire.
Il y a aussi un double question ici - Trouver de nouveaux messages sont ajoutés à une boîte aux lettres imap depuis la dernière fois que j'ai vérifié avec python imaplib2?
Deux fonctions utiles pour vous permettre de récupérer les corps et les pièces jointes d'un nouveau message que vous avez détectés (référence: Comment récupérer un mail le corps à l'aide imaplib en python?) -
getMsgs
etgetAttachment
que vous pouvez ensuite utiliser dans lefor message in messages[0].split(' '):
pour la boucle.Une note sur le marquage des messages comme on le voit. La modification de la ligne de typ, data = conn.magasin(num,'FLAGS','\\Vu") typ, data = conn.magasin(num,'+FLAGS','\\Vu"), il fixe pour moi.
où est-ret-ils définis?
votre réponse ne fonctionne pas dans tous les cas. j'essaie de vérifier les messages invisibles et le premier message dans la liste des messages invisibles a
['flags', ('RFC822', 'message')
tandis que les autres ont[('RFC822', 'message')]
. Soit c'est certains IMAP étrangeté, ou imaplib2 a un drôle de format de sortie.Qu'est-ce que
check()
? Python ne le trouve pasOriginalL'auteur Calvin Cheng
La réponse ci-dessus n'est pas réellement le travail plus ou peut-être jamais fait, mais je l'ai modifié de sorte qu'il ne renvoie que des messages invisibles, il sert à donner : l'erreur ne peut pas analyser commande fetch ou quelque chose comme ça ici, c'est un code de travail :
Je pense que l'erreur vient de la
messages[0].split(' ')
mais le code ci-dessus devrait fonctionner correctement.Note également de la
+FLAGS
au lieu de-FLAGS
qui marque le message comme lu.imaplib
etemail
OriginalL'auteur Amro elaswar
Doit être adaptée à:
D'accord ... mais de toute façon il juste m'a aidé donc +1
OriginalL'auteur Daniel Karpienia
J'ai réussi à obtenir que cela fonctionne à l'aide de Gmail:
OriginalL'auteur Edward Chapman