Imap странное поведение при получении UIDS больше, чем - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь получить с сервера imap идентификаторы, которые больше указанного c uid в папке «Входящие».

Запрос выглядит так:

UID SEARCH UID 13780:*

Ответ:

* SEARCH 13779
aaaj OK UID SEARCH Completed.

Почему возвращается UID 13779? Это меньше, чем 13780!

Затем я отправляю электронное письмо, и ответ следующий:

* SEARCH 13779
* 5 EXISTS
* 4 RECENT
aaak OK UID SEARCH Completed.

И после следующего запроса ответ будет следующим:

* SEARCH 13780
aaal OK UID SEARCH Completed.

Почему так происходит?

Во время всех запросов я оставляю сеанс открытым.

Почему он вернул более низкий uid, я понял, потому что максимальный uid был ниже, чем запрошенный uid. Но почему он возвращает первый раз:

* 5 EXISTS
* 4 RECENT

А потом:

* SEARCH 13780
aaal OK UID SEARCH Completed.

Итак, в моем случае необходима информация 13780, могу ли я получить ее сразу? Без EXISTS и ПОСЛЕДНЕГО в первом запросе?

1 Ответ

2 голосов
/ 07 января 2020

UID SEARCH UID 13780:* не означает «все идентификаторы больше или равны 13780». Это означает «все UID между 13780 и самым большим UID в почтовом ящике». То есть * внутренне заменяется текущим наибольшим UID.

Если текущий наибольший UID равен 13779, то команда разбирается на UID SEARCH UID 13780:13779, что эквивалентно UID SEARCH UID 13779:13780, так как по спецификациям диапазоны m:n и n:m эквивалентны.

Следовательно, вы всегда получаете самый большой UID в почтовом ящике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...