1

我正在处理 IMAP 客户端(更准确地说,使用 JavaMail)的实现,它使用 IMAP idle() 命令直接从服务器获取新的电子邮件通知,而无需轮询它。

这是我的问题:在发送此空闲命令后我是否应该做其他事情(即再次发送 IMAP idle(),只是询问消息的数量)以保持连接处于活动状态?

换一种说法:即使我之前发送了 idle() 命令,此服务器是否可以关闭当前的 IMAP 连接?

我在 Stackoverflow 和其他网站上发现了很多问题/一些代码,但我仍然不满意。希望那里有 IMAP 协议方面的专家。

谢谢!

4

2 回答 2

1

服务器可能不会断开您的连接,但永远不要依赖套接字的稳定性,连接可能由于多种不同的原因而消失,您需要优雅地拦截异常并尝试再次连接,可能在增加超时之后。

例如,KMail 认为连接是金字塔之后世界上最持久的东西,所以在暂停我的笔记本电脑并移动到其他地方之后,我必须重新启动它才能让它再次连接到 IMAP 服务器。

于 2012-11-29T14:09:44.503 回答
1

该协议表明服务器可能会在 30 分钟后断开您的连接,即使在空闲状态下也是如此。

您必须至少每 30 分钟结束 IDLE 并重新发出它。此外,正如 Lt.Worf 所指出的,套接字可能由于多种其他原因而关闭。

于 2012-11-29T15:47:31.147 回答