Java 邮件 api,邮件处理过程中连接断开
Java Mail api, connection gets lost during message process
在我们的 java 邮件(使用 Java 邮件 API)应用程序中,我们首先连接到邮件服务器,获取邮件,处理 headers 然后再处理邮件正文和附件像往常一样使用 pop3。
Session session = Session.getInstance(props, null);
Store store = session.getStore(urln);
store.connect();
Folder f = store.getFolder("INBOX");
f.open(READ);
Messages m = f.getMessages(..);
for (Message m : messages) {
if (!store.isConnected()) {
//raise exception
}
processSubject();
processFrom();
processBodyAndAttachments();
..
}
该实现在大多数环境中运行良好,但在某些客户中,storeconnection 在 for 循环的过程中丢失。我们可以在日志中看到引发异常。我的问题:
据我所知,邮件服务器有时会拒绝新连接,但确实如此
它终止当前的生活联系(可能是因为太多
连接或断开旧连接以访问新连接?)
商店断开连接时,文件夹也会关闭吗?
是不是检查文件夹比较好?
for循环中可能处处掉线
将 isConnected 检查放在
循环,它会使代码变脏,还会导致性能问题,
放入 try catch 块并检查是否是一个好习惯
IO异常? (文件夹关闭)或其他建议?哪些例外
应该如何处理?在某些情况下,消息可能不是
可解析但连接正常。
添加断开连接监听器怎么样?
- 网络连接可能因多种原因而中断。您的程序必须随时为连接断开做好准备。
- 对于 POP3,只有一个连接,因此如果连接断开,应断开存储并关闭文件夹。
- 如果文件夹已打开,请检查文件夹。否则检查商店。
- 您需要一种处理故障的策略。如果您跟踪哪些消息已被成功处理,您可能能够在失败后在下一条消息处重新开始处理。很多细节取决于您的环境和应用程序要求。
- 断开监听器不会让这更容易。
在我们的 java 邮件(使用 Java 邮件 API)应用程序中,我们首先连接到邮件服务器,获取邮件,处理 headers 然后再处理邮件正文和附件像往常一样使用 pop3。
Session session = Session.getInstance(props, null);
Store store = session.getStore(urln);
store.connect();
Folder f = store.getFolder("INBOX");
f.open(READ);
Messages m = f.getMessages(..);
for (Message m : messages) {
if (!store.isConnected()) {
//raise exception
}
processSubject();
processFrom();
processBodyAndAttachments();
..
}
该实现在大多数环境中运行良好,但在某些客户中,storeconnection 在 for 循环的过程中丢失。我们可以在日志中看到引发异常。我的问题:
据我所知,邮件服务器有时会拒绝新连接,但确实如此 它终止当前的生活联系(可能是因为太多 连接或断开旧连接以访问新连接?)
商店断开连接时,文件夹也会关闭吗?
是不是检查文件夹比较好?
for循环中可能处处掉线 将 isConnected 检查放在 循环,它会使代码变脏,还会导致性能问题, 放入 try catch 块并检查是否是一个好习惯 IO异常? (文件夹关闭)或其他建议?哪些例外 应该如何处理?在某些情况下,消息可能不是 可解析但连接正常。
添加断开连接监听器怎么样?
- 网络连接可能因多种原因而中断。您的程序必须随时为连接断开做好准备。
- 对于 POP3,只有一个连接,因此如果连接断开,应断开存储并关闭文件夹。
- 如果文件夹已打开,请检查文件夹。否则检查商店。
- 您需要一种处理故障的策略。如果您跟踪哪些消息已被成功处理,您可能能够在失败后在下一条消息处重新开始处理。很多细节取决于您的环境和应用程序要求。
- 断开监听器不会让这更容易。