Comment itérer-vous à travers chaque e-mail dans votre boîte de réception en utilisant python?

StackOverflow https://stackoverflow.com/questions/2983647

Question

Je suis tout à fait nouveau à la programmation et je suis en train de construire un autorespoder envoyer un msg à une adresse e-mail spécifique.

En utilisant une instruction if, je peux vérifier s'il y a un e-mail d'une certaine adresse dans la boîte de réception et je peux envoyer un e-mail, mais s'il y a plusieurs e-mails à partir de cette adresse, comment puis-je faire une boucle pour envoyer un e-mail pour chaque e-mail à partir de cette adresse spécifique.

J'ai essayé de faire utiliser comme une boucle:

for M.search(None, 'From', address) in M.select(): 

mais je reçois l'erreur: « ne peut affecter à l'appel de fonction » sur cette ligne

Était-ce utile?

La solution

Comme vous prétendez être nouveau à la programmation, mon meilleur conseil est: Toujours lire la documentation

.

Et peut-être vous devriez lire un tutoriel premier.


Le donne un exemple:

import getpass, imaplib

M = imaplib.IMAP4()
M.login(getpass.getuser(), getpass.getpass())
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    print 'Message %s\n%s\n' % (num, data[0][3])
M.close()
M.logout()

Avez-vous essayé?


En ce qui concerne votre code:

Lorsque vous définissez une boucle for , il devrait être comme :

for x in some_data_set:

x est une variable, qui détient la valeur d'un élément à la fois (et est accessible uniquement dans le corps pour la boucle (à une exception près, mais cela n'a pas d'importance ici)).

Ce que vous faites est pas lié au module imaplib mais la syntaxe tout simplement faux.

BTW. .select() sélectionne une boîte aux lettres et seulement des retours le nombre de messages dans la boîte aux lettres . C'est à dire. juste une valeur scalaire, aucune séquence vous pouvez itérer sur:

IMAP4.select ([boîte aux lettres [, lecture seule]]) Sélectionnez une boîte aux lettres. Les données retournées sont le nombre de messages dans la boîte aux lettres (existe réponse). La boîte aux lettres par défaut est « INBOX ». Si le drapeau est mis en lecture seule, des modifications à la boîte aux lettres ne sont pas autorisés.

(Ceci est en effet liée au module de imaplib;))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top