Как включить push-уведомление для IMAP (Gmail) с помощью Python imaplib?
Есть ли способ контролировать учетную запись gmail с помощью imaplib без опроса gmail каждый раз, когда я хочу посмотреть, есть ли новая почта. Другими словами, я просто хочу, чтобы script был уведомлен о новом сообщении, поэтому я могу обработать его прямо сейчас, а не любое время задержки между опросами.
Я вижу, что протокол IMAP поддерживает это с помощью команды IDLE, но я не вижу ничего документированного в документах imaplib, поэтому любая помощь с этим будет замечательной!
Ответы
Ответ 1
В imaplib нет чего-то такого, AFAIK (отказ от ответственности: я очень мало знаю о Python), однако, кажется, что кто-то реализовал расширение IDLE для Python, которое имеет тот же интерфейс, что и imaplib (который вы можете поменять с помощью без изменений в существующий код, по-видимому):
https://github.com/imaplib2/imaplib2
Ответ 2
Проверьте ProcImap. Это более абстрактная структура поверх libimap и libimap2, предоставляющая хорошее решение для обработки IMAP-сервисов. Похоже, только то, что вы ищете, и для меня. Я правильно имею ту же проблему с вами и только что нашел ProcImap. Попробуем это для себя.
Ответ 3
В этой ссылке показан пример использования IMAP IDLE: http://blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/
В нем используется одна и та же библиотека, связанная с ответом casperOne (imaplib2).
Ответ 4
Существует простой patch, предложенный bugs.python.org выполнить RFC 2177 IMAP IDLE в синхронном режиме (чтобы ждать более 1 сервера IMAP, вам нужно использовать потоки или другие средства параллельной исполнение). Он использует stdlib select для ожидания в сокете, включая тайм-аут. Этот патч будет в конечном итоге добавлен в stdlib, но тесты должны быть записаны первыми.
Команда IDLE - это то, что вам нужно для gmail IMAP push- уведомление.
Надеюсь, это поможет:)