Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在发送IMAP idle命令后是否需要执行其他操作以保持连接处于活动状态?_Java_Email_Protocols_Imap_Jakarta Mail - Fatal编程技术网

Java 在发送IMAP idle命令后是否需要执行其他操作以保持连接处于活动状态?

Java 在发送IMAP idle命令后是否需要执行其他操作以保持连接处于活动状态?,java,email,protocols,imap,jakarta-mail,Java,Email,Protocols,Imap,Jakarta Mail,我正在处理一个IMAP客户机(更准确地说,是JavaMail)的实现,它使用IMAP idle()命令直接从服务器获取新的电子邮件通知,而不必轮询它 我的问题是:在发送这个idle命令(即再次发送IMAP idle(),只是询问消息的数量)之后,我是否应该执行其他操作以保持连接的活动状态 另一种说法是:即使我之前发送了idle()命令,该服务器是否可以关闭当前的IMAP连接 我在Stackoverflow和其他网站上发现了很多问题/一些代码,但我仍然不满意。希望有一位IMAP协议方面的专家 谢谢

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

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

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

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


谢谢

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


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

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


您必须结束空闲并至少每30分钟重新发布一次。此外,正如Lt.Worf所指出的,套接字可能会因为许多其他原因而关闭。

Ok,因此最好的选择是让一个线程在30分钟内“结束并重新发送”空闲,并检查是否存在任何其他可能迫使我重新启动与服务器的连接的问题。我不熟悉javamail。idle()是阻塞调用吗?但是,是的,你需要每隔29分钟左右重新启动一次空闲。这一点很好。既然你提到了KMail,我还没有找到任何适合Android的电子邮件应用程序。你有什么建议吗?