Команда Imap становится запутанной - PullRequest
0 голосов
/ 19 октября 2018

Я получаю кучу электронных писем с помощью команд Imap, поэтому мой процесс будет выглядеть следующим образом:

A6 UID FETCH 960 (FLAGS UID BODY[])
* 3 FETCH (UID 960 FLAGS (\\Seen) BODY[] {22655}
A6 OK UID completed

выше - это то, что я получаю в 99% случаев, а сообщение принимается успешно

Но тогда есть 1% как следующие

A72 UID FETCH 963 (FLAGS UID BODY[])
 * 7670 FETCH (FLAGS () UID 10667)

Эти сообщения, которые я не могу прочитать, они терпят неудачу

Если я сделаю следующее

    while (!sizeLine.Contains("BODY"))
    {
        sizeLine = ReadLine();
    }

Я быполучить результаты, как в этом примере

A201 UID FETCH 1649 (FLAGS UID BODY[])
* 7670 FETCH (FLAGS () UID 10667) <--- why ?
* 7674 FETCH (FLAGS () UID 10671) <--- why ?
* 198 FETCH (UID 1649 FLAGS (\\Seen) BODY[] {22386} <--- this is what I expected

Так что есть обходной путь, но не уверен, что он правильный?

1 Ответ

0 голосов
/ 19 октября 2018

IMAP - это протокол заполнения кэша.Предполагается, что у клиента есть кеш, а когда чего-то не хватает в кеше, вы сообщаете серверу, что вам нужно, и сервер отправляет вам вещи в кеш.

Обратите внимание, что сервер может отправлять вам вещи в кешпо причинам, отличным от «вы просили об этом».Наиболее распространенными другими причинами являются «пришло какое-то новое письмо» и «кто-то другой прочитал / удалил какое-то письмо».

Сервер в порядке означает «Я отправил вам все, что вы просили» и, возможно, сервертакже отправил вам еще немного.

В этом случае сервер отправил вам три вещи: «Флаги для UID 10667 теперь являются пустым списком», «Флаги для UID 10671 теперь являются пустым списком» итот, который вы просили.Обычная причина для отправки обновлений флагов заключается в том, что многие / большинство клиентов отображают их, например, некоторые отображают темы невидимой почты жирным шрифтом.Это не важноСервер пытается быть полезным и не знает, помогает ли он вам на самом деле.

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