是否可以接受将 java 邮件会话传输保持打开状态?
2022-09-02 22:22:17
我的应用程序需要临时发送电子邮件。我正在使用javamail的getDefaultSession和getTransport来发送消息,并且它都按预期工作。
但是,我注意到发送可能需要很长时间 - 每次发送最多七秒钟。如果我把台阶拆开,就像这样:
Transport transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage( msg, addresses )
transport.close();
...我可以看到,这是连接()调用,几乎每次都需要花费所有时间。
我发现的所有示例都这样做 - 获取传输,连接,发送,断开连接。但是,当然,它们都是单次示例,或者在单个呼叫中发送大量电子邮件。
我想我可以保持连接打开,就像这样:
Transport transport = session.getTransport("smtp");
if (!transport.isConnected())
transport.connect();
transport.sendMessage( msg, addresses )
(这里有一个变体:java邮件保持传输对象连接)。
我最终将不得不在某种关闭钩子中关闭它。我可能必须有一个回退(如果连接已经丢失,但传输没有意识到)。但是,有什么理由不在应用程序生存期内像这样保持打开状态呢?
谢谢 阿拉斯泰尔