Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java邮件:会话_Java_Email_Imap_Jakarta Mail - Fatal编程技术网

Java邮件:会话

Java邮件:会话,java,email,imap,jakarta-mail,Java,Email,Imap,Jakarta Mail,下面是用于连接IMAP文件夹并对其执行操作的代码。 因此,我的问题是关于javax.mail.Session,在本例中,它将每秒重新创建一次(取决于checkInbox()的睡眠时间和运行时) 我确信这不是一个好的解决方案,尤其是在IMAP上进行轮询有点愚蠢,但我无法运行IMAP侦听器 重新创建会话并非每次运行都是更好的解决方案,但我如何知道会话何时关闭,或者我可以故意关闭它?但是没有比Session.close()更好的了,或者Session不是空的吗?或者会话中是否定义了某个超时 来源:

下面是用于连接IMAP文件夹并对其执行操作的代码。 因此,我的问题是关于
javax.mail.Session
,在本例中,它将每秒重新创建一次(取决于checkInbox()的睡眠时间和运行时)

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

重新创建会话并非每次运行都是更好的解决方案,但我如何知道
会话何时关闭
,或者我可以故意关闭它?但是没有比Session.close()更好的了,或者Session不是空的吗?或者会话中是否定义了某个超时

来源

final String port=“993”;
Properties prop=新属性();
//我假设这里有一些冗余,但到目前为止,这并没有造成任何问题
prop.setProperty(“mail.imaps.starttls.enable”、“true”);
prop.setProperty(“mail.imaps.port”,port);
/**此部件可以拆下
*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”);
//在循环之前创建会话,因为配置没有更改
Session Session=Session.getInstance(prop);
//在Prod中几乎永远循环
while(true){
//检查收件箱并做一些其他事情
Store Store=session.getStore(“imaps”);
存储连接(主机、用户、pw);
//…会话上的操作。。。
store.close();
//睡一觉试试看&抓住它
睡眠(1000);
}

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

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

另一方面,连接成本很高,需要应用程序仔细管理。连接用于存储和每个打开的文件夹。连接可以随时由服务器关闭,也可以由于网络故障而关闭。如果某个连接未被积极使用,则应将其关闭

您在上找到JavaMail规范和示例应用程序了吗?它们将帮助解决许多简单的问题,但连接管理是一个更高级的问题


哦,您可以简化您的应用程序。

非常感谢。请参见上面源代码中的编辑。希望现在情况更好,会话和连接的处理方式也应该如此。当我有时间的时候,我应该构建一个IMAP侦听器来摆脱轮询。你知道我在哪里可以找到合适的和最新的例子或指南吗?我想在/javamail samples/monitoring.java中我找到了我想要的。上次我这么做的时候似乎没有引起足够的注意。是的,这应该让你开始了。我没有关闭商店,或者发现了困难的方法,并从提供商那里收到了一条错误消息“最大连接数…”。其中20是最大值。