以下是连接和执行IMAP文件夹操作的代码。
所以我的问题是关于
我确定这不是一个好的解决方案,特别是在IMAP上轮询有点愚蠢,但我无法使
不是每次运行都重新创建会话可能是更好的解决方案,但我如何知道何时关闭
javax.mail.Session
,在这种情况下,它将每秒重新创建一次(取决于睡眠时间和checkInbox()运行时间)。我确定这不是一个好的解决方案,特别是在IMAP上轮询有点愚蠢,但我无法使
IMAP监听器
运行。不是每次运行都重新创建会话可能是更好的解决方案,但我如何知道何时关闭
会话
或者我可以有意关闭它吗?但是没有像Session.close()
这样的东西,那么会话是否为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);
}