我刚刚在 Gmail 网站上删除了一封电子邮件。Thunderbird 中也立即删除了这封电子邮件。Thunderbird 是如何做到这一点的?我以为电子邮件使用请求-响应机制,只是偶尔检查收件箱。它只是快速轮询吗?它对 Gmail 有特殊行为吗?它是如何工作的?
答案1
IMAP 同步始终是一种请求-响应机制,但交换则不是。
交换可以是请求-响应机制,但也可以是“到达时通知我”又称推送机制。
由于 gmail 使用 exchange 电子邮件,因此如果设置正确,则可以在发生任何变化时进行同步。
一旦 thunderbird 知道服务器端已更改,它就会请求本地刷新。根据设置方式,它要么只刷新电子邮件列表,要么下载必要的更改(取决于是否启用了缓存)。
答案2
当连接到 IMAP 邮件服务器时,Thunderbird 使用闲置的命令订阅更改通知。使用它将导致服务器在当前文件夹的内容以任何方式更改时开始发送通知。
尽管 IMAP 主要是请求-响应,但它也允许服务器随时生成各种“未标记”的消息,例如在标记的命令与其结果之间,或者甚至在没有命令等待时。
(尽管如 IDLE RFC 摘要中所述,基线协议对此没有充分指定,因此调用 IDLE 必须暂时切换到专用的“等待实时更新”模式。我认为 Thunderbird 可能正在使用一个专用于当前文件夹空闲的连接,另一个用于常规消息检索命令。)