Как включить push-уведомления для IMAP (Gmail) с помощью Python imaplib? - PullRequest
24 голосов
/ 07 января 2009

Есть ли способ контролировать учетную запись gmail с помощью imaplib без опроса gmail каждый раз, когда я хочу узнать, есть ли новая почта. Или, другими словами, я просто хочу, чтобы скрипт был уведомлен о новом сообщении, чтобы я мог обработать его сразу, а не какое-либо время задержки между опросами.

Я вижу, что протокол IMAP поддерживает это с помощью команды IDLE, но я не вижу ничего документированного с этим в документации по imaplib, поэтому любая помощь с этим была бы полезной!

Ответы [ 4 ]

13 голосов
/ 07 января 2009

В imaplib нет чего-то такого, AFAIK (отказ от ответственности: я очень мало знаю о Python), однако, кажется, что кто-то реализовал расширение IDLE для Python, которое имеет тот же интерфейс, что и imaplib (что поменять местами без изменений в существующем коде, очевидно):

https://github.com/imaplib2/imaplib2

6 голосов
/ 14 января 2009

Оформить ProcImap . Это более абстрактная структура поверх libimap и libimap2, предоставляющая хорошее решение для работы с IMAP-сервисами. Похоже, именно то, что вы ищете, и для меня тоже. У меня такая же проблема с тобой и я только что нашел ProcImap. Собираюсь попробовать это для себя.

2 голосов
/ 20 апреля 2013

Существует простой патч , предложенный на bugs.python.org , реализующий RFC 2177 IMAP IDLE синхронно (ожидание более 1 IMAP) сервер вы должны использовать потоки или другие средства параллельного выполнения). Он использует stdlib select для ожидания на сокете, включая тайм-аут. Этот патч в конечном итоге будет добавлен в stdlib, , но сначала нужно написать тесты . Команда IDLE - это то, что вам нужно для push-уведомлений IMAP в gmail. Надеюсь, это поможет:)

2 голосов
/ 29 января 2011

Эта ссылка показывает пример использования IMAP IDLE: http://blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/

Используется та же библиотека, что и в ответе casperOne (imaplib2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...