MailKit / IMAP / QRESYNC:更新缓存的HighestModSeq?

问题描述 投票:1回答:1

以下答案为使用MailKit在消息同步实现中利用QRESYNC提供了一个很好的路线图:

MailKit IMAP fetch only new, not downloaded messages

但是,它不包括使用更新的HighestModSeq值更新本地缓存。具体来说,新价值是如何获得的?何时是获得它的适当时间?我假设在任何MessagesVanished,CountChanged或MessageFlagsChanged事件触发后,它都会发生变化。关于这一点的任何澄清将非常感激。

c# .net imap mailkit mimekit
1个回答
1
投票

但是,它不包括使用更新的HighestModSeq值更新本地缓存。具体来说,新价值是如何获得的?

Open()ing文件夹后(无论您使用哪个重载),将设置ImapFolder.HighestModSeq属性。

何时是获得它的适当时间?

在打开文件夹之后,我可能不会立即在缓存上设置值,直到您重新与服务器同步为止。但是,一旦你完成了,我会更新缓存的值并尝试保持更新。

我假设在任何MessagesVanished,CountChanged或MessageFlagsChanged事件触发后,它都会发生变化。

你可以听一个folder.HighestModSeqChanged活动。在以下情况下会发出此事件:

  1. 服务器发送HIGHESTMODSEQ resp-code(表示值已更改)
  2. 用户调用了一个Fetch()重载,并且在FETCH响应中遇到大于文件夹当前HighestModSeq值的MODSEQ值。

我更新了另一个答案,添加逻辑以更新缓存的HighestModSeq以及UidValidity值。

© www.soinside.com 2019 - 2024. All rights reserved.