2011-09-22 54 views
8

Quiero escribir un módulo python que envíe datos a un mensaje de borrador en una cuenta de G-mail. Escribí un guión hace dos semanas que funcionó perfectamente con imaplib. Un ejemplo simplificado de mi módulo está a continuación. (He creado una dirección de correo electrónico de prueba para que cualquiera pueda probar esta secuencia de comandos en.)Crear un mensaje borrador en Gmail usando imaplib en 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") 

Se utiliza la función .Append, pero hoy cuando corro el módulo y se produce el siguiente error:

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'] 

Como dije antes, este módulo funcionaba antes. Creó borradores de mensajes con la cadena "Test" en su cuerpo. Dado que este script solía funcionar, parece más probable que tenga algo que ver con un cambio de Google en las características IMAP de las cuentas de correo electrónico, pero el error parece indicar un error en el comando APPEND. He probado el script de Python en dos computadoras diferentes para ver si mi archivo de biblioteca estaba dañado, pero el mismo error permaneció.

Además, estoy usando Python 2.6. Cualquier ayuda es apreciada.

Respuesta

6

Antes de la conn.append, añada lo siguiente:

import email 

A continuación, cambie la línea conn.append para leer:

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

¿Hay alguna forma de añadir un tema? –

+0

Sí, hay: (vea el ejemplo de EMailMessage en https://docs.python.org/3.5/library/email-examples.html) – thisch

Cuestiones relacionadas