¿Cómo habilito la notificación automática para IMAP (Gmail) utilizando Python imaplib?

StackOverflow https://stackoverflow.com/questions/421178

  •  05-07-2019
  •  | 
  •  

Pregunta

¿Hay alguna forma de monitorear una cuenta de gmail usando imaplib sin sondear gmail cada vez que quiero ver si hay correo nuevo? O en otras palabras, solo quiero que se notifique a la secuencia de comandos un mensaje nuevo para poder procesarlo de inmediato en lugar de cualquier tiempo de retraso entre encuestas.

Veo que el protocolo IMAP admite esto con el comando IDLE, pero no puedo ver nada documentado con él en los documentos de imaplib, ¡por lo que cualquier ayuda con esto sería genial!

¿Fue útil?

Solución

No hay nada en imaplib que haga esto, AFAIK (disclamador: sé muy poco acerca de Python), sin embargo, parece que alguien ha implementado una extensión IDLE para Python que tiene la misma interfaz que imaplib (que puedes cambiar sin cambios en el código existente, aparentemente):

https://github.com/imaplib2/imaplib2

Otros consejos

Consulte ProcImap . Es un marco más abstracto sobre 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 al tener el mismo problema contigo y acabo de encontrar a 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 simple parche propuesto en bugs.python.org implementando RFC 2177 El comando IMAP IDLE de forma sincrónica (para esperar más de 1 servidor IMAP, debe usar subprocesos u otros medios de ejecución paralela). 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 usted need para la notificación de inserción IMAP de gmail. Espero, esto ayudará :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top