Я пишу скрипт python, который регулярно проверяет наличие нового электронного письма, соответствующего определенному поиску. Однако он никогда не показывает новые письма без повторного подключения.Python Imaplib: Получайте новые письма Gmail без повторного подключения
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login(user,passwd)
mail.select("inbox")
while True:
result, idData = mail.uid('search', query, "ALL")
processIDs(idData)
time.sleep(60)
поиск находит все письма, которые соответствуют моему запросу во время входа, но он никогда не находит электронные письма, которые приходят в то время как он работает. Как только я остановлю скрипт и перезагрузим его, все электронные письма мгновенно появятся.
Если googled и просмотрел документы imaplib, но не нашел ничего полезного.
Как я могу получить новые сообщения электронной почты, чтобы не пересобираться на сервер imap?
Редактировать: Причина, по которой я хочу избежать повторного подключения, связана с ограничениями скорости gmail.
Что делать, если вы перемещаете эти две строки 'mail.login (user, passwd)' 'mail.select (" inbox ")' внутри цикла while? это не идеальное решение, но может дать вам желаемые результаты, иначе вы можете искать, поддерживает ли эта библиотека режим потоковых данных? – ZdaR
@Anmol_uppal Да, если я вхожу в систему каждый раз, когда это работает, но это то, чего я специально хочу избежать из-за ограничений скорости входа в Gmail. Я не знаю много о imap, если в потоковом режиме данных вы имеете в виду imap IDLE, тогда я так не думаю. Из того, что я читал, IDLE - это способ получить push-обновления для новых писем, но python imaplib этого не поддерживает. – Ecko
попробуйте копировать только 'mail.select (" inbox ")' эта строка внутри цикла и посмотреть, работает ли это? Я не уверен в этом, но он должен работать, я думаю, – ZdaR