Session 什么';javamail中会话和SMTP连接之间的关系是什么?

Session 什么';javamail中会话和SMTP连接之间的关系是什么?,session,smtp,connection,jakarta-mail,transport,Session,Smtp,Connection,Jakarta Mail,Transport,在我的电子邮件发送应用程序中,我在SenderImpl中持有一个单例会话实例。 对于每封电子邮件,我从会话中检索传输实例进行发送,并在发送完成后关闭它 现在我想重新使用SMTP连接进行批量电子邮件发送,所以我想弄清楚,会话、传输和底层套接字连接(SMTP连接)之间的关系是什么 一个传输实例对应一个底层套接字连接,对吗 会话和底层套接字连接之间没有关联,对吗 非常感谢所有响应。传输对应于单个连接 会话包含配置信息。非常感谢您,比尔。另外两个问题:我们的电子邮件应用程序在中国,SMTP服务器在欧洲(

在我的电子邮件发送应用程序中,我在SenderImpl中持有一个单例会话实例。 对于每封电子邮件,我从会话中检索传输实例进行发送,并在发送完成后关闭它

现在我想重新使用SMTP连接进行批量电子邮件发送,所以我想弄清楚,会话、传输和底层套接字连接(SMTP连接)之间的关系是什么

一个传输实例对应一个底层套接字连接,对吗

会话和底层套接字连接之间没有关联,对吗


非常感谢所有响应。

传输对应于单个连接


会话包含配置信息。

非常感谢您,比尔。另外两个问题:我们的电子邮件应用程序在中国,SMTP服务器在欧洲(一家商业SMTP提供商),套接字连接非常昂贵,打开它平均需要5秒左右(实际发送只需要2秒左右),为了获得更好的性能,我必须重新使用它。我想让传输实例作为SenderImpl的实例变量(或静态变量?)。当应用程序启动时打开它。1作为实例变量,传输实例是否是线程安全的?2如何确保基础套接字连接在空闲一段时间(即半小时)后关闭,并在收到新消息时重新打开?这里有很多问题。。。传输实例是线程安全的,但不能从多个线程有效地使用它,因为它管理对单个连接的访问,而该连接一次只能由一个线程使用。当服务器决定您最近没有使用连接时,它将关闭连接。您可以使用isConnected方法在使用它之前查看它是否打开,但请注意,在检查和使用它之间,服务器仍然可以关闭它。服务器非常希望您在不积极使用连接时关闭连接。