2011-09-22 10 views
8

Desidero scrivere un modulo python che invii i dati a una bozza di messaggio in un account G-mail. Ho scritto una sceneggiatura circa due settimane fa che ha funzionato perfettamente con imaplib. Di seguito è riportato un esempio semplificato del mio modulo. (Ho creato un indirizzo di posta elettronica di prova per chiunque di testare questo script su.)Creazione di un messaggio bozza in Gmail utilizzando l'imaplib in Python

import imaplib 
import time 
conn = imaplib.IMAP4_SSL('imap.gmail.com', port = 993) 
conn.login('[email protected]', '123456aaa') 
conn.select('[Gmail]/Drafts') 
conn.append("[Gmail]/Drafts", '', imaplib.Time2Internaldate(time.time()), "TEST") 

Ha utilizzato la funzione .Append, ma oggi quando ho eseguito il modulo e produce il seguente errore:

Traceback (most recent call last): 
    File "C:/Windows/System32/email_append_test.py", line 6, in <module> 
    conn.append("[Gmail]/Drafts", '', imaplib.Time2Internaldate(time.time()), "TEST") 
    File "C:\Python26\lib\imaplib.py", line 317, in append 
    return self._simple_command(name, mailbox, flags, date_time) 
    File "C:\Python26\lib\imaplib.py", line 1060, in _simple_command 
    return self._command_complete(name, self._command(name, *args)) 
    File "C:\Python26\lib\imaplib.py", line 895, in _command_complete 
    raise self.error('%s command error: %s %s' % (name, typ, data)) 
imaplib.error: APPEND command error: BAD ['Invalid Command'] 

Come ho detto prima, questo modulo funzionava prima. Ha creato con successo bozze di messaggi con la stringa "Test" nel suo corpo. Poiché questo script funzionava, sembra più probabile che abbia qualcosa a che fare con una modifica apportata da Google alle funzionalità IMAP degli account Gmail, ma l'errore sembra indicare un errore nel comando APPEND. Ho testato lo script python su due computer diversi per vedere se il mio file di libreria era corrotto, ma lo stesso errore è rimasto.

Inoltre, sto usando Python 2.6. Qualsiasi aiuto è apprezzato.

risposta

6

Prima della conn.append, aggiungere il seguente:

import email 

quindi modificare la linea di conn.append a leggere:

conn.append("[Gmail]/Drafts", 
      '', 
      imaplib.Time2Internaldate(time.time()), 
      str(email.message_from_string('TEST'))) 
+2

C'è un modo per aggiungere un soggetto? –

+0

Sì, c'è: (vedere l'esempio EMailMessage in https://docs.python.org/3.5/library/email-examples.html) – thisch

Problemi correlati