Я работаю над почтовым клиентом и в настоящее время пытаюсь реализовать синхронизацию всех папок в почтовом ящике. Чтобы добиться этого, я попытался использовать метод IMAPClient noop
:
while True:
for folder in folders:
client.select_folder(folder, readonly=True) #
response = client.noop()
print(response)
Проблема здесь заключается в том, что при выборе папки каждый раз, когда кажется, что я не получаю обновления, при n oop возврат пустого списка в каждой итерации. Однако, если я удалю select_folder
тела while-l oop и запусту один и тот же код только для одной папки, n oop будет работать так, как ожидается, возвращая последние обновления:
folder = ... # any hard-coded folder
client.select_folder(folder, readonly=True) #
while True:
response = client.noop()
print(response) # Can see the updates here
Есть ли способ преодолеть эту проблему? Или, может быть, весь мой подход неверен?
Я пытался переписать логи c, используя idle
и idle_check
, но даже если соответствующая возможность присутствует для почтового ящика, мы сталкиваемся с другой проблемой: ограниченное количество одновременных подключений для данного почтового ящика. Таким образом, если количество максимально разрешенных одновременных подключений меньше количества папок (как это будет происходить в большинстве случаев), такой подход также не будет приемлемым решением. Скажите, пожалуйста, что IMAPClient не предназначен для синхронизации c только одной папки за раз :)