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

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

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

https://github.com/imaplib2/imaplib2

Другие советы

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

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

Он использует ту же библиотеку, на которую ссылается ответ casperOne (imaplib2).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top