【发布时间】:2011-05-19 01:19:06
【问题描述】:
我的应用程序需要临时发送电子邮件。我正在使用 javamail 的 getDefaultSession 和 getTransport 来发送消息,并且一切正常。
但是我注意到发送可能需要很长时间 - 每次发送最多 7 秒。如果我分解步骤,像这样:
Transport transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage( msg, addresses )
transport.close();
...我可以看到每次几乎所有时间都是 connect() 调用。
我发现的所有示例都是这样做的 - 获取传输、连接、发送、断开连接。但当然,它们都是单次示例,或者在一次调用中发送大量电子邮件。
我在想我可以让连接保持打开状态,如下所示:
Transport transport = session.getTransport("smtp");
if (!transport.isConnected())
transport.connect();
transport.sendMessage( msg, addresses )
(这里有一个变体:java mail keeping Transport object connected)。
我最终将不得不关闭它,在某种关闭挂钩中。而且我可能必须有一个后备(如果连接已丢失但传输没有实现)。但是,有什么理由不在应用程序生命周期内就这样保持打开状态吗?
谢谢, 阿拉斯泰尔
【问题讨论】:
标签: java jakarta-mail