gpt4 book ai didi

Java 邮件 : Session

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:16 30 4
gpt4 key购买 nike

下面是用于连接 IMAP 文件夹并对其执行操作的代码。所以我的问题是关于 javax.mail.Session 的,在这种情况下它会每秒重新创建一次(取决于 checkInbox() 的 hibernate 时间和运行时间)。

我确定这不是一个好的解决方案,尤其是在 IMAP 上进行轮询有点愚蠢,但我无法让 IMAP 监听器 运行。

并非每次运行都重新创建 session 可能是更好的解决方案,但我如何知道 session 何时关闭 或我可以故意关闭它?但是没有像 Session.close() 这样的东西,或者 Session 不是 NULL?或者在 Session 上是否有一些定义的超时...

来源:

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);
}

总而言之,我不得不说很难找到 javax.mail 的好的示例和文档(除了 APIFAQ )

最佳答案

Session只是管理配置信息;没有必要关闭它。只要您的配置不变,您可以在开始时创建一次 Session 并继续使用它。

另一方面,连接是昂贵的,需要由应用程序仔细管理。连接用于商店和每个打开的文件夹。连接可以随时被服务器关闭或由于网络故障而关闭。如果连接未被主动使用,您应该将其关闭。

您是否在 JavaMail project page 上找到了 JavaMail 规范和示例应用程序? ?他们会帮助解决很多简单的问题,但连接管理是一个更高级的问题。

哦,你可以 remove all that socket factory stuff并使您的应用程序更简单。

关于Java 邮件 : Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852664/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com