2017-05-19 1 views
0

Je dois écrire un programme qui vérifie une boîte de réception Gmail en utilisant imaplib et envoie les e-mails qui ne correspondent pas à un sujet spécifique à un e-mail distinct. Je peux le faire en utilisant stmplib mais je ne sais pas comment le faire si l'e-mail qui doit être envoyé et supprimé contient une pièce jointe. Ce qui suit est mon code que je dois mettre à jour pour être capable de gérer les emails avec des pièces jointes.Comment transférer un e-mail avec pièces jointes en utilisant Python

# Connect and login to email 
imap = imaplib.IMAP4_SSL('imap.gmail.com') 
imap.login('[email protected]','password') 
imap.list() 
imap.select('inbox') 

smtp = smtplib.SMTP_SSL('smtp.gmail.com') 
smtp.login('[email protected]','password') 

try: 
    #Search and return sequential ids 
    result, data = imap.search(None,'ALL') 
    ids_list = data[0].split() 
    #print 'Total emails: '+str(len(ids_list)) 
    latest_id = ids_list[-1] 

    #Process each email in inbox 
    for i in ids_list: 
     t, d = imap.fetch(i, '(RFC822)') 
     for res_part in d: 
      if isinstance(res_part, tuple): 
       text = res_part[1] 
       msg = email.message_from_string(text) 
       subject = msg['subject'] 
       #print 'Subject: '+subject 
       message = get_txt(msg) #Retrieves email body text 
       #print message 
       if subject != 'The subject I\'m looking for': #Junk email 
        #print 'Sending to another email...' 
        smtp.sendmail('[email protected]', '[email protected]', message) 
        imap.store(i, '+FLAGS', '\\Deleted') 
        imap.expunge() 
       else: #Email we need to process 
        #print 'Process this email' 

except IndexError: 
    #Inbox is empty 

Quelqu'un peut-il me montrer la bonne façon d'y parvenir? Merci!

+0

@abccd J'ai mis à jour avec le code actuel que j'ai. J'en ai besoin pour être capable de gérer les pièces jointes des emails alors qu'il ne gère actuellement que le corps d'un email. – McFizz

Répondre

0

Pour utiliser cette bibliothèque, vous avez besoin d'un serveur SMTP opérationnel. Vous pouvez utiliser celui de votre fournisseur de messagerie, ou vous pouvez en créer un pour vous. Après cela, vous ne pouvez plus créer de lien, par exemple pour un serveur FTP, sur lequel vous déposez. Cela devrait également être pris en charge avec POP.