Я пытаюсь использовать режим ожидания библиотеки imapclient.Используя только данный пример , электронные письма, которые приходят в режиме ожидания, помечаются как прочитанные.Сначала я получаю ответ сервера о том, что сообщение видно, но затем создается впечатление, что библиотека извлекает письмо и устанавливает флаг увиденного.Это так, как должно быть, или я что-то упустил?вот как выглядит вывод:
Connection is now in IDLE mode, send yourself an email or quit with ^c
('Server sent:', [(330, 'EXISTS')])
('Server sent:', [(330, 'FETCH', ('UID', 484, 'FLAGS', ('\\Seen',)))])
Вот вывод с включенной отладкой.Похоже, что - это создатель выборки.
('Server sent:', 'nothing')
2018-05-10 21:00:13,325 - DEBUG: < * 328 EXISTS
('Server sent:', [(328, 'EXISTS')])
2018-05-10 21:00:28,342 - DEBUG: < * 328 FETCH (UID 513 FLAGS (\Seen))
('Server sent:', [(328, 'FETCH', ('UID', 513, 'FLAGS', ('\\Seen',)))])
Вот соответствующая часть [полного] кода, который я использовал:
# Open a connection in IDLE mode and wait for notifications from the
# server.
from imapclient import IMAPClient
HOST = 'imap.host.com'
USERNAME = 'someuser'
PASSWORD = 'password'
server = IMAPClient(HOST)
server.login(USERNAME, PASSWORD)
server.select_folder('INBOX')
# Start IDLE mode
server.idle()
print("Connection is now in IDLE mode, send yourself an email or quit with ^c")
while True:
try:
# Wait for up to 30 seconds for an IDLE response
responses = server.idle_check(timeout=30)
print("Server sent:", responses if responses else "nothing")
except KeyboardInterrupt:
break
server.idle_done()
print("\nIDLE mode done")
server.logout()