(utilizando los comandos IMAP, no con la ayuda de cualquier otro paquete de correo)IMAP: cómo mover un mensaje de una carpeta a otra
Respuesta
No estoy seguro de qué tan versado eres en términos de palabras, pero básicamente después de iniciar sesión, "SELECCIONA" el buzón de origen, "COPIA" los mensajes, y "EXPUNGE" los mensajes (o "ELIMINA" el buzón viejo si está vacío ahora :-).
a login a s
b select source
c copy 1 othermbox
d store 1 +flags (\Deleted)
e expunge
sería un ejemplo de mensajes para enviar. (Nota : mensajes IMAP requieren un prefijo UNIQE antes de cada comando, así el "abc" delante)
Ver RFC 2060 para más detalles.
Por favor, vea [RFC 3501] (http://tools.ietf.org/html/rfc3501) en su lugar. – dkarp
Tenga en cuenta que 'expunge' eliminará _todos_ mensajes marcados' \ Deleted', que pueden no ser los que usted desea. –
supongo que copiar el mensaje a la carpeta nueva y luego borrar (EXPUNGE) en el anterior.
INDIRECTA No hay comando DELETE que hace lo que quiere decir, que tiene que marcar el mensaje como eliminado y luego EXPUNGE el buzón. Eche un vistazo al RFC. Tenga cuidado con DELETE, ya que borra los buzones enteros, no solo los correos.
Si tiene el uid del correo electrónico que se va a mover.
import imaplib
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select(src_folder_name)
apply_lbl_msg = obj.uid('COPY', msg_uid, desti_folder_name)
if apply_lbl_msg[0] == 'OK':
mov, data = obj.uid('STORE', msg_uid , '+FLAGS', '(\Deleted)')
obj.expunge()
Dónde msg_uid es el identificador de usuario del correo.
-1: "utilizando los comandos IMAP, no con la ayuda de ningún otro paquete de correo" – dkarp
+1 Este fue de lejos el mejor vínculo que encontré al usar python para esta tarea. –
Existen varias formas de hacerlo. El mejor es el comando UID MOVE
definido en RFC 6851 desde principios de 2013:
C: a UID MOVE 42:69 foo
S: * OK [COPYUID 432432 42:69 1202:1229]
S: * 22 EXPUNGE
S: (more expunges)
S: a OK Done
La presencia de esta extensión está indicada por la capacidad MOVE
.
Si no está disponible, pero UIDPLUS
(RFC 4315) es decir, la segunda mejor opción es utilizar la combinación de UID STORE
, UID COPY
y UID EXPUNGE
:
C: a01 UID COPY 42:69 foo
S: a01 OK [COPYUID 432432 42:69 1202:1229] Copied
C: a02 UID STORE 42:69 +FLAGS.SILENT (\Deleted)
S: a02 OK Stored
C: a03 UID EXPUNGE 42:69
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: * 10 EXPUNGE
S: a03 Expunged
Si el UIDPLUS
no se encuentra, no hay nada Es razonable que lo pueda hacer: el comando EXPUNGE
elimina permanentemente todos los mensajes marcados para eliminación, incluidos los que no ha tocado. Lo mejor es simplemente usar UID COPY
y UID STORE
en ese caso.
Mi servidor no tiene soporte para 'UID MOVE':/ –
Su segunda mejor oportunidad está en el segundo listado de código, entonces. –
- 1. ¿Cómo puedo mover un archivo a otra carpeta usando php?
- 2. mover todos los archivos en una carpeta a otra?
- 3. Cómo copiar un archivo de una carpeta a otra carpeta
- 4. ¿Cómo mover/copiar un archivo de una carpeta a otra en Android usando phonegap?
- 5. Cómo archivar un mensaje usando el rubí `net/imap`
- 6. ¿Cómo puedo mover todos los archivos de una carpeta a otra usando la línea de comando?
- 7. Cómo determinar el UID de un mensaje en IMAP
- 8. Cómo mover a una carpeta de nuevo en python
- 9. Mover archivos de una solución de Visual Studio a otra
- 10. ¿Cómo mover atómicamente las filas de una tabla a otra?
- 11. ¿Cómo mover confirmaciones a otra sucursal?
- 12. ¿Cómo mover todas las confirmaciones de una rama a otra?
- 13. Copie un archivo de una carpeta a otra utilizando vbscripting
- 14. mover todos los archivos y carpetas en una carpeta a otra?
- 15. cómo puedo mover mi proyecto de Qt a otra PC
- 16. Determinar el uid de un mensaje adjunto a un buzón a través de IMAP
- 17. ¿Cómo incluir un archivo de otra carpeta?
- 18. Mover cambios de una rama a otra sin fusionar
- 19. Mueva todos los archivos de una carpeta a otra carpeta con java
- 20. electrónicos enviados con phpmailer no van a "Sent" carpeta IMAP
- 21. Mover datos SQL de una tabla a otra
- 22. ¿Mover la fila de una tabla a otra?
- 23. PHP IMAP - ¿Los correos electrónicos deben tener un mensaje de mensaje?
- 24. ¿Cómo agregar otra carpeta fuente de prueba a Maven y compilarla en una carpeta separada?
- 25. Mover a seguir otra línea en un archivo
- 26. Script de VBA personalizado de Outlook 2010 para mover el mensaje de correo entrante a una carpeta específica
- 27. cómo descargar archivos adjuntos a una carpeta específica usando IMAP y php
- 28. Mover un archivo a una nueva carpeta, manteniendo el historial de Git
- 29. Copie los permisos de una carpeta de Windows a otra
- 30. ¿Cómo mover el método principal a otra clase en Scala?
Si bien no hay un comando IMAP "mover" en la especificación actual, hay una propuesta para una extensión: http://tools.ietf.org/html/draft-gulbrandsen-imap-move-01 (Arnt Gulbrandsen, Marzo de 2012). Lamentablemente, es probable que el enlace esté muerto en el momento en que desee hacer clic en él, debido a la política de caducidad borrador bastante agresiva del IETF. – tripleee
RFC6851 Extensión MOVE: http://tools.ietf.org/html/rfc6851. Por supuesto, si su servidor no lo admite COPY, 'STORE \ DELETED flag' y EXPUNGE es la única opción (como en las respuestas a continuación) –
@triplee: tools.ietf.org los enlaces no caducan. Los borradores caducan, pero tools.ietf.org sigue dando una respuesta razonable. – arnt