java - 发送 IMAP 空闲命令后是否需要执行其他操作才能保持连接处于 Activity 状态?

标签 java email protocols imap jakarta-mail

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

这是我的问题:发送此空闲命令后我是否应该执行其他操作(即再次发送 IMAP IDLE(),仅询问消息数)以保持连接处于 Activity 状态?

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

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

谢谢!

最佳答案

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

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

关于java - 发送 IMAP 空闲命令后是否需要执行其他操作才能保持连接处于 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13626292/

相关文章:

java - Hibernate EntityManager 合并不更新空白更改

java - Spring Data 的 Pageable 是否采用页码或查询偏移量?

java - 从 Android 设备访问 SQL DB 时,我的 httpEntity 返回 null,任何人都可以告诉我这是为什么吗?

java - 在特定日期发送电子邮件

swift - 将协议(protocol)的关联类型与另一个关联类型进行约束

java - JFace - 如何根据同一行中另一列的复选框值在 TreeViewer 中仅可编辑一列?

javascript - 使用作业队列(kue/node/express)时将响应发送回请求者

php - 通过 PHP mail() 函数发送短信时出现 'From' header 问题

swift 。在内部协议(protocol)中声明私有(private)函数

swift - 为什么不能在 Swift 3.2/4 KeyPath 类型别名中使用通用的 Self 引用?