以下答案为使用MailKit在消息同步实现中利用QRESYNC提供了一个很好的路线图:
MailKit IMAP fetch only new, not downloaded messages
但是,它不包括使用更新的HighestModSeq值更新本地缓存。具体来说,新价值是如何获得的?何时是获得它的适当时间?我假设在任何MessagesVanished,CountChanged或MessageFlagsChanged事件触发后,它都会发生变化。关于这一点的任何澄清将非常感激。
但是,它不包括使用更新的HighestModSeq值更新本地缓存。具体来说,新价值是如何获得的?
在Open()
ing文件夹后(无论您使用哪个重载),将设置ImapFolder.HighestModSeq
属性。
何时是获得它的适当时间?
在打开文件夹之后,我可能不会立即在缓存上设置值,直到您重新与服务器同步为止。但是,一旦你完成了,我会更新缓存的值并尝试保持更新。
我假设在任何MessagesVanished,CountChanged或MessageFlagsChanged事件触发后,它都会发生变化。
你可以听一个folder.HighestModSeqChanged
活动。在以下情况下会发出此事件:
Fetch()
重载,并且在FETCH响应中遇到大于文件夹当前HighestModSeq值的MODSEQ值。我更新了另一个答案,添加逻辑以更新缓存的HighestModSeq以及UidValidity值。