我们打算开发一种服务,它始终保持连接到电子邮件服务器,这样每当用户触发邮件时,它就会使用连接发送,而不是获取一个新的连接 并发送邮件。 有没有可能我们总是使用 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/