27 Stimmen

Wie aktiviere ich Push-Benachrichtigung für IMAP (Gmail) mit Python imaplib?

Gibt es eine Möglichkeit, ein Gmail-Konto mit imaplib zu überwachen, ohne Gmail jedes Mal abzufragen, wenn ich sehen will, ob es neue E-Mails gibt. Oder anders ausgedrückt, ich möchte nur, dass das Skript über eine neue Nachricht benachrichtigt wird, damit ich sie sofort verarbeiten kann, ohne dass es zu einer Verzögerung zwischen den Abfragen kommt.

Ich sehe, dass das IMAP-Protokoll dies mit dem IDLE-Befehl unterstützt, aber ich kann nicht sehen, etwas dokumentiert mit ihm in der imaplib docs, so dass jede Hilfe mit diesem wäre groß!

16voto

casperOne Punkte 72238

Es gibt nichts in imaplib, das dies tut, AFAIK (disclamer: Ich weiß sehr wenig über Python), jedoch scheint es, dass jemand eine IDLE-Erweiterung für Python implementiert hat, die die gleiche Schnittstelle wie imaplib hat (die Sie mit keine Änderungen an bestehenden Code, anscheinend austauschen können):

https://github.com/imaplib2/imaplib2

1 Stimmen

+1 - Ich habe imaplib kürzlich benutzt und den von Ihnen beschriebenen Zustand vorgefunden.

0 Stimmen

Der angegebene Link existiert nicht mehr. Das Paket kann gefunden werden unter sourceforge

0 Stimmen

6voto

evo Punkte 313

Überprüfen Sie ProcImap . Es ist ein abstrakteres Framework, das auf libimap und libimap2 aufbaut und eine schöne Lösung für die Handhabung von IMAP-Diensten bietet. Sieht aus wie genau das Zeug, das Sie suchen, und für mich auch. Ich habe genau das gleiche Problem wie Sie und habe gerade ProcImap gefunden. Ich werde es für mich selbst ausprobieren.

0 Stimmen

Wow. Das ist genau das, was ich suche, um Client-seitige Filter zu schreiben.

0 Stimmen

@evo hat das für Sie funktioniert? Ich möchte auch Push-Benachrichtigungen über neue Nachrichten erhalten, anstatt sie abzufragen. Welche Funktion in ProcImap haben Sie verwendet?

0 Stimmen

@Alexis würde ich vermuten ImapServer.idle

3voto

sid Punkte 972

Dieser Link zeigt ein Beispiel für die Verwendung von IMAP IDLE: http://blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/

Es verwendet die gleiche Bibliothek, die in der Antwort von casperOne verlinkt ist (imaplib2).

2 Stimmen

2voto

Matus Punkte 603

Es ist einfach Patch vorgeschlagen am bugs.python.org Implementierung von [RFC 2177 IMAP IDLE] 3 Befehl auf synchrone Weise auszuführen (um auf mehr als 1 IMAP-Server zu warten, müssen Sie Threads oder andere Mittel der parallelen Ausführung verwenden). Es verwendet stdlib select, um auf den Socket zu warten, einschließlich Timeout. Dieser Patch wird eventuell zu stdlib hinzugefügt werden, aber die Tests müssen erst geschrieben werden . Die IDLE Befehl ist das, was Sie brauchen für Google Mail IMAP Push-Benachrichtigung. Ich hoffe, das wird helfen :)

0 Stimmen

Leider ist der Patch immer noch nicht Teil der stdlib. Man kann die imaplib2 verwenden, die auf sourceforge oder imapclient gehostet auf github

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X