发送IMAP空闲命令后是否需要执行其他操作才能保持连接活动?

时间:2012-11-29 12:53:18

标签: java email protocols imap javamail

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

该协议表示服务器可能会在30分钟后断开您的连接,即使在IDLE中也是如此。

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