2010-06-10 47 views
8

Estoy tratando de hacer algo tan simple como mover un correo electrónico de la bandeja de entrada a la papelera usando el imaplib de python. Sin embargo, estoy teniendo algunos problemas y no sé cómo resolverlos.Imaplib: cómo eliminar un correo electrónico de Gmail?

Después de conexión y una sesión en el servidor, selecciono el buzón bandeja de entrada y tengo la lista de identificadores de esta manera:

typ, ids = imap_object.search(None, 'INBOX') 
ids_list = ids[0].split() 

Supongamos que tomo una identificación a partir de ahí, X y supongamos que ese correo electrónico es parte de una conversación. Cuando hago

imap_object.fetch (X, '(RFC822)')[1] 

puedo ver sólo el mensaje, como lo esperaba, pero cuando lo hago

imap.store(X, '+FLAGS', r'(\Deleted)') 

se elimina toda la conversación, no sólo el mensaje !. Además, no quiero para eliminar por completo el correo electrónico, quiero enviarlo a la Papelera, por lo que he intentado:

imap.copy(X, '[Gmail]/Papelera') 
imap.store(X, '+FLAGS', r'(\Deleted)') 
imap.expunge() 

pero solo se copia el mensaje a la Papelera, y después de que se elimina toda la conversación ¡Así que estoy perdiendo correos electrónicos!

PREGUNTA: ¿Cómo puedo borrar un correo electrónico de Gmail mediante imaplib, sin eliminar toda la conversación?

+0

Antes de cualquier respuesta, es posible que sus conversaciones borradas todavía se puedan ver en el " Carpeta "Todo correo" (a través de la interfaz web). – tzot

Respuesta

2

Creo que su conversación no se borra realmente: de manera predeterminada, al eliminar un mensaje por IMAP de la última carpeta, se archiva la conversación. Consulte Configuración -> Reenvío y POP/IMAP -> Cuando un mensaje se marca como borrado y borrado de la última carpeta IMAP visible:

Cuestiones relacionadas