Kuc*_*chi 10 java email imap jakarta-mail
下面用于连接和执行IMAP文件夹操作的代码.所以我的问题是关于javax.mail.Session在这种情况下每秒重建一次(取决于checkInbox()的休眠时间和运行时间).
我确信这不是一个好的解决方案,特别是对IMAP的调查有点愚蠢,但我无法IMAP listener运行.
不是每次运行都重新创建会话可能是一个更好的解决方案,但我怎么知道何时session is closed或是否可以故意关闭它?但是没有什么Session.close()比Session或者什么更像是NULL?或者会话上有一些已定义的超时...
来源:
final String port = "993";
Properties prop = new Properties();
// I assume there is some redundancy here but this didn't cause any problems so far
prop.setProperty("mail.imaps.starttls.enable", "true");
prop.setProperty("mail.imaps.port", port);
/** This part can be removed
* prop.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
* prop.setProperty("mail.imaps.socketFactory.port", port);
* prop.setProperty("mail.imaps.socketFactory.fallback", "false");
*/
prop.setProperty("mail.imap.ssl.enable", "true");
prop.setProperty("mail.debug", "false");
// Create a session before you loop since the configuration doesn't change
Session session = Session.getInstance(prop);
// Nearly loop forever in Prod
while(true){
// Check the INBOX and do some other stuff
Store store = session.getStore("imaps");
store.connect(host, user, pw);
// ... the operations on the session ...
store.close();
// Sleep a bit try & catch removed
Thread.sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)
Bil*_*non 13
会话只管理配置信息; 没有必要关闭它.只要您的配置没有更改,您可以在开头创建一次会话,并继续使用它.
另一方面,连接很昂贵,需要由应用程序仔细管理.连接用于存储和每个打开的文件夹.连接可以随时由服务器关闭或由于网络故障而关闭.如果未主动使用连接,则应将其关闭.
您是否在JavaMail项目页面上找到了JavaMail规范和示例应用程序?他们将帮助解决许多简单问题,但连接管理是一个更高级的问题.
哦,你可以删除所有套接字工厂的东西,让你的应用程序更简单.