read - python receive email
¿Cómo activo la notificación push para IMAP(Gmail) usando Python imaplib? (4)
No hay nada en imaplib que haga esto, AFAIK (disclamer: sé muy poco sobre Python), sin embargo, parece que alguien ha implementado una extensión IDLE para Python que tiene la misma interfaz que imaplib (que puedes intercambiar con sin cambios al código existente, aparentemente):
¿Hay alguna manera de controlar una cuenta de gmail utilizando imaplib sin consultar cada vez que quiero ver si hay un nuevo correo? O en otras palabras, solo quiero que se notifique a la secuencia de comandos de un nuevo mensaje para que pueda procesarlo de inmediato en lugar de cualquier tiempo de demora entre las encuestas.
Veo que el protocolo IMAP admite esto con el comando IDLE, pero no puedo ver nada documentado con él en los documentos imaplib, ¡así que cualquier ayuda con esto sería genial!
Mira ProcImap . Es un marco más abstracto además de libimap y libimap2, que proporciona una buena solución para manejar los servicios IMAP. Parece justo lo que estás buscando, y para mí también. Tengo razón en tener el mismo problema contigo y acabo de encontrar ProcImap. Voy a intentarlo por mí mismo.
Este enlace muestra un ejemplo del uso de IMAP IDLE: http://blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/
Utiliza la misma biblioteca vinculada a en la respuesta de casperOne (imaplib2).
Hay un parche simple propuesto en bugs.python.org que implementa el comando RFC 2177 IMAP IDLE de forma síncrona (para esperar más de 1 servidor IMAP, debe usar hilos u otros medios de ejecución en paralelo). Utiliza stdlib select para esperar en el socket, incluido el tiempo de espera. Este parche eventualmente se agregará a stdlib, pero las pruebas deben escribirse primero . El comando IDLE es lo que necesitas para la notificación push de Gmail IMAP. Espero, esto ayudará :)