Найти - Пользователи
Полная версия: IMAP и выборка UID-ов старше N
Начало » Network » IMAP и выборка UID-ов старше N
1
WhiteTiger
При работе с imaplib наткнулся на проблему которая, похоже, является проблемой серверной части. Или же какой-то особенностью.
В директории Х имею последнее полученное письмо с UID 100. Пытаясь получить свежую почту отправляю такой search-запрос:
 uids = imap.uid('SEARCH', 'UID 101:*')
либо так
 uids = imap.search(None, 'UID 101:*')
Сверившись с RFC, ожидаю получения всех юидов которые >= 101-го, т.е. 101, 102, …. . Однако иногда (не всегда) сервер возвращает UIDы меньше указанного в запросе. Например 97 или 99. При этом данные UIDы являются письмами пришедшими раньше UID 100, т.е. это точно не новая почта.

Сколько не гуглил на эту тему, везде пишут одно - возьми последний UID+1 как N и сделай “SEARCH UID N:*”. Однако действительность иная, и не на домашнем тест-сервере, а например на imap.yandex.ru.
Кто-нибудь сталкивался с таким? Интересно раскопать в чём может быть причина.

Пока что для получения свежей почты приходится каждый раз сравнивать список имеющихся UIDов в директории на сервере, и список UIDов уже полученных писем. Оно, конечно, не страшно даже если с сервера каждый раз тянется список из нескольких тысяч UIDов, однако выборка просто всех писем старше N имхо более красивое решение.

pyuser
WhiteTiger
Пока что для получения свежей почты приходится каждый раз сравнивать список имеющихся UIDов в директории на сервере, и список UIDов уже полученных писем
А чем search(None, “(UNSEEN)”) не угодил?
WhiteTiger
pyuser
А чем search(None, “(UNSEEN)”) не угодил?
У меня не совсем обычная ситуация. Ящик юзать могут несколько человек и один из них может письмо просмотреть, а остальным нужно тоже сообщить что есть новое письмо и показать какое.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB