MailKit/IMAP/QRESYNC:正在更新缓存的 HighestModSeq?
MailKit/IMAP/QRESYNC: Updating cached HighestModSeq?
以下答案提供了使用 MailKit 在消息同步实现中利用 QRESYNC 的出色路线图:
MailKit IMAP fetch only new, not downloaded messages
但是,它不包括使用更新的 HighestModSeq 值更新本地缓存。具体来说,新的值是如何得到的呢?什么时候获取比较合适?我假设它会在任何 MessagesVanished、CountChanged 或 MessageFlagsChanged 事件触发后发生变化。对这一点的任何澄清将不胜感激。
However, it does not cover the updating of the local cache with an updated HighestModSeq value. Specifically, how is the new value obtained?
在 Open()
文件夹后(无论您使用哪种重载),ImapFolder.HighestModSeq
属性 将被设置。
When is the appropriate time to obtain it?
在您与服务器重新同步之前,我可能不会在打开文件夹后立即在缓存中设置值。不过,一旦您完成了该操作,我就会更新缓存值并尝试保持更新。
I assume it is expected to change after any MessagesVanished, CountChanged, or MessageFlagsChanged event fires.
有一个 folder.HighestModSeqChanged
事件可以监听。在以下情况下会发出此事件:
- 服务器发送了一个 HIGHESTMODSEQ 响应代码(表示该值已更改)
- 用户调用了
Fetch()
重载之一,并且在 FETCH 响应中遇到大于文件夹当前 HighestModSeq 值的 MODSEQ 值。
我已经更新了另一个答案以添加用于更新缓存的 HighestModSeq 以及 UidValidity 值的逻辑。
以下答案提供了使用 MailKit 在消息同步实现中利用 QRESYNC 的出色路线图:
MailKit IMAP fetch only new, not downloaded messages
但是,它不包括使用更新的 HighestModSeq 值更新本地缓存。具体来说,新的值是如何得到的呢?什么时候获取比较合适?我假设它会在任何 MessagesVanished、CountChanged 或 MessageFlagsChanged 事件触发后发生变化。对这一点的任何澄清将不胜感激。
However, it does not cover the updating of the local cache with an updated HighestModSeq value. Specifically, how is the new value obtained?
在 Open()
文件夹后(无论您使用哪种重载),ImapFolder.HighestModSeq
属性 将被设置。
When is the appropriate time to obtain it?
在您与服务器重新同步之前,我可能不会在打开文件夹后立即在缓存中设置值。不过,一旦您完成了该操作,我就会更新缓存值并尝试保持更新。
I assume it is expected to change after any MessagesVanished, CountChanged, or MessageFlagsChanged event fires.
有一个 folder.HighestModSeqChanged
事件可以监听。在以下情况下会发出此事件:
- 服务器发送了一个 HIGHESTMODSEQ 响应代码(表示该值已更改)
- 用户调用了
Fetch()
重载之一,并且在 FETCH 响应中遇到大于文件夹当前 HighestModSeq 值的 MODSEQ 值。
我已经更新了另一个答案以添加用于更新缓存的 HighestModSeq 以及 UidValidity 值的逻辑。