2010-06-06 16 views
1

Je suis complètement nouveau à la programmation et j'essaye de construire un autorespoder pour envoyer un message à une adresse email spécifique. En utilisant une instruction if, je peux vérifier s'il y a un email d'une certaine adresse dans la boîte de réception et je peux envoyer un email, mais s'il y a plusieurs emails de cette adresse, comment puis-je faire une boucle for pour envoyer un email pour chaque email de cette adresse spécifique.Comment parcourez-vous chaque courriel de votre boîte de réception en utilisant python?

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 pas attribuer à fonctionner appel » sur cette ligne

Répondre

4

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

Et peut-être vous devriez d'abord lire un tutorial.


Le documentation 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 un for loop, il devrait être comme:

for x in some_data_set: 

x est une variable, qui tient à la fois la valeur d'un élément (et est accessible uniquement dans le corps de la boucle for (à une exception près, mais ce n'est pas important ici)). Ce que vous faites n'est pas lié au module imaplib, mais juste à la syntaxe incorrecte.

Btw. .select() sélectionne une boîte aux lettres et renvoie uniquement 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([mailbox[, readonly]])
Select a mailbox. Returned data is the count of messages in mailbox (EXISTS response). The default mailbox is 'INBOX'. If the readonly flag is set, modifications to the mailbox are not allowed.

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