MailKit / IMAP / QRESYNC: обновление кэшированного HighestModSeq? - PullRequest
0 голосов
/ 13 февраля 2019

Следующий ответ предоставляет отличную схему использования MailKit для использования QRESYNC в реализации синхронизации сообщений:

MailKit IMAP извлекает только новые, не загруженные сообщения

Однако, он не покрывает обновление локального кэша обновленным значением HighestModSeq.В частности, как получить новое значение?Когда подходящее время для его получения?Я предполагаю, что ожидается его изменение после возникновения любого события MessagesVanished, CountChanged или MessageFlagsChanged.Любые разъяснения по этому вопросу были бы очень признательны.

1 Ответ

0 голосов
/ 13 февраля 2019

Однако оно не охватывает обновление локального кэша обновленным значением HighestModSeq.В частности, как получить новое значение?

После Open() в папке (независимо от того, какую перегрузку вы используете) будет установлено свойство ImapFolder.HighestModSeq.

Когда подходящее время для его получения?

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

Я предполагаю, что оно изменится после любого события MessagesVanished, CountChanged или MessageFlagsChanged.

Существует событие folder.HighestModSeqChanged, которое вы можете прослушать.Это событие генерируется в следующих случаях:

  1. код ответа HIGHESTMODSEQ отправляется сервером (означает, что значение изменилось)
  2. Пользователь вызвал один из Fetch() перегрузок и значение MODSEQ, превышающее текущее значение HighestModSeq папки, встречается в ответе FETCH.

Я обновил другой ответ, добавив в него логику для обновления кэшированного HighestModSeq, а такжеЗначения UidValidity.

...