smtp - 使用 JAVA Mail API 的连续电子邮件服务器连接

标签 smtp jakarta-mail massmail mail-server

我们打算开发一种服务,它始终保持连接到电子邮件服务器,这样每当用户触发邮件时,它就会使用连接发送,而不是获取一个新的连接 并发送邮件。 有没有可能我们总是使用 JAVA Mail API 与电子邮件服务器保持连接??。 请帮助我。

最佳答案

当您连接到 SMTP 服务器时(以及使用 javax.mail API 时),您使用的是套接字连接(参见 SMTPTransport and Transport classes 的 src)。套接字让您连接到远程服务器,并且该连接保持打开状态,直到明确关闭。这意味着理论上您可以创建一个连接并让他们重用它。

但是,许多 SMTP 服务器非常邪恶,会终止连接 if you are using it "too slow"if you try to resuse your SMTP session to often . (我为您查找了 postfix 设置。)

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

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

但是,由于 SMTP 服务器的特性,您不能只执行一次 connect() 就忘记它。至多,您可以做的是通过重新连接来妥善处理强制断开连接。 Java Mail API 中有一个通知机制可以做到这一点(看看 notifyConnectionListeners 方法的用法)

关于smtp - 使用 JAVA Mail API 的连续电子邮件服务器连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8265933/

相关文章:

java - Domino 10 有时无法在 Java 下解码 MIME header

java - 如何使用javamail添加内联图像?

html - 如何发送 HTML 电子邮件

asp.net - 使用asp.net发送20,000多个电子邮件

PHP群发邮件

ruby-on-rails - 连接到 gmail 时 Rails 3.1.0.rc5 中的 Net::SMTPAuthenticationError

coldfusion - 在 Application.cfm 中的邮件服务器之间切换

wordpress - 使用端口 465 使用 smtp (SSL) 发送电子邮件