Domanda

Esiste un modo per monitorare un account Gmail usando imaplib senza eseguire il polling di Gmail ogni volta che voglio vedere se ci sono nuovi messaggi. O in altre parole, voglio solo che lo script riceva una notifica di un nuovo messaggio in modo da poterlo elaborare immediatamente anziché qualsiasi intervallo di tempo tra i sondaggi.

Vedo che il protocollo IMAP supporta questo con il comando IDLE, ma non riesco a vedere nulla documentato con esso nei documenti imaplib, quindi qualsiasi aiuto con questo sarebbe fantastico!

È stato utile?

Soluzione

Non c'è qualcosa in imaplib che lo faccia, AFAIK (rivelatore: so molto poco di Python), tuttavia, sembra che qualcuno abbia implementato un'estensione IDLE per Python che ha la stessa interfaccia di imaplib (che puoi scambiare senza modifiche al codice esistente, a quanto pare):

https://github.com/imaplib2/imaplib2

Altri suggerimenti

Scopri ProcImap . È un framework più astratto su libimap e libimap2, che fornisce una buona soluzione per gestire i servizi IMAP. Sembra proprio quello che stai cercando, e anche per me. Sto avendo lo stesso problema con te e ho appena trovato ProcImap. Lo proverò da solo.

Questo link mostra un esempio dell'uso di IMAP IDLE: http://blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/

Utilizza la stessa libreria collegata nella risposta di casperOne (imaplib2).

Esiste una semplice patch proposta in bugs.python.org implementando RFC 2177 IMLE IDAP comando in modo sincrono (per attendere più di 1 server IMAP è necessario utilizzare thread o altri mezzi di esecuzione parallela). Utilizza stdlib select per attendere sul socket incluso il timeout. Questa patch eventualmente verrà aggiunta a stdlib, ma i test devono essere scritti per primi . Il comando IDLE è ciò che necessità per la notifica push IMAP di Gmail. Spero che questo possa aiutare :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top