Como faço para ativar push-notificação para IMAP (Gmail), utilizando Python imaplib?

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Existe uma maneira de monitorar uma conta do Gmail usando imaplib sem polling gmail cada vez que eu quero ver se há novas mensagens. Ou em outras palavras, eu só quero o script para ser notificado de uma nova mensagem para que eu possa processá-lo imediatamente, em vez de qualquer intervalo de tempo entre as pesquisas.

Eu vejo que o protocolo IMAP suporta isto com o comando IDLE, mas eu não posso ver nada documentado com ele nos docs imaplib, portanto, qualquer ajuda com isso seria ótimo!

Foi útil?

Solução

Não é algo em imaplib que faz isso, AFAIK (DISCLAMER: Eu sei muito pouco sobre Python), no entanto, parece que alguém tem implementado uma extensão IDLE para Python que tem a mesma interface que imaplib (que você pode trocar sem alterações ao código existente, aparentemente):

https://github.com/imaplib2/imaplib2

Outras dicas

Confira ProcImap . É um quadro mais abstratas sobre libimap e libimap2, proporcionando uma solução agradável aos serviços alça IMAP. Parece apenas o material que você está procurando, e para mim também. Estou certo tendo o mesmo problema com você e só encontrei ProcImap. Vou tentar para mim.

Este link mostra um exemplo do uso de IMAP IDLE: http://blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/

Ele usa a mesma biblioteca vinculado na resposta de casperOne (imaplib2).

Não é simples remendo proposta em bugs.python.org implementação RFC 2177 comando IMAP IDLE de forma síncrona (que esperar por mais de 1 servidor IMAP você tem que usar fios ou outros meios de execução paralela). Ele usa stdlib escolha de esperar no soquete incluindo timeout. Este patch , eventualmente ser adicionado ao stdlib, mas os testes têm que ser escritos primeiro . A comando IDLE é o que você necessidade para gmail IMAP push-notificação. Hope, isso vai ajudar:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top