Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

https://github.com/imaplib2/imaplib2

Ответ 2

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

Ответ 4

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