【发布时间】:2011-10-05 09:59:40
【问题描述】:
目前我正在使用Commons Email 发送电子邮件,但我一直无法找到在发送的电子邮件之间共享 smtp 连接的方法。我有如下代码:
Email email = new SimpleEmail();
email.setFrom("example@example.com");
email.addTo("example@example.com");
email.setSubject("Hello Example");
email.setMsg("Hello Example");
email.setSmtpPort(25);
email.setHostName("localhost");
email.send();
这非常易读,但是当我处理大量消息时速度很慢,我相信这是为每条消息重新连接的开销。所以我用下面的代码对其进行了分析,发现使用重用 Transport 可以使事情快三倍。
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect("localhost", 25, null, null);
MimeMessage message = new MimeMessage(mailSession);
message.setFrom(new InternetAddress("example@example.com"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("example@example.com"));
message.setSubject("Hello Example");
message.setContent("Hello Example", "text/html; charset=ISO-8859-1");
transport.sendMessage(message, message.getAllRecipients());
所以我想知道是否有办法让 Commons Email 重用一个 SMTP 连接来发送多个电子邮件?我更喜欢 Commons Email API,但性能有点痛苦。
谢谢, 赎金
【问题讨论】:
标签: java email apache-commons-email