使用 JAVA Mail API 进行连续电子邮件服务器连接

vai*_*ram 3 smtp jakarta-mail massmail mail-server

我们打算开发一种服务,该服务始终与电子邮件服务器保持连接,以便每当用户触发邮件时,都会使用连接发送邮件,而不是获取新连接并发送邮件。我们是否可以始终使用 JAVA Mail API 保持与电子邮件服务器的连接?请在这方面帮助我。

now*_*waq 5

当您连接到 SMTP 服务器时(也包括使用javax.mailAPI 时),您使用套接字连接(请参阅SMTPTransport 和 Transport 类的 src )。套接字允许您连接到远程服务器,并且该连接保持打开状态直到显式关闭为止。这意味着理论上您可以创建一个连接并且他们可以重用它。

然而,许多 SMTP 服务器都非常邪恶,如果您使用“太慢”或者您尝试经常重新使用 SMTP 会话,它们就会终止连接。(我为你查找了后缀设置。)

Java Mail API 允许您创建连接并在需要时关闭它。史密斯。像这样:

        Transport transport = session.getTransport("smtp");
        transport.connect();
        transport.sendMessage(msg, addressArray);
        // you can do transport.close(); later
Run Code Online (Sandbox Code Playgroud)

然而,由于 SMTP 服务器的实际情况,您不能只执行connect()一次然后忘记它。您最多可以做的是通过重新连接来正确处理强制断开连接。Java Mail API 中有一个通知机制可以做到这一点(看看该notifyConnectionListeners方法的用法)