如何在一个会话中发送多封电子邮件?

我想向不同的收件人发送数千封不同的电子邮件,并想打开与我的SMTP的连接并保留它。我希望这样可以更快,然后重新打开错误邮件的连接。我想为此使用Apache

Commons Email,但如有必要,可以使用Java Mail API。

现在,我正在执行此操作,每次打开一个都会关闭连接:

HtmlEmail email = new HtmlEmail();

email.setHostName(server.getHostName());

email.setSmtpPort(server.getPort());

email.setAuthenticator(new DefaultAuthenticator(server.getUsername(), server.getPassword()));

email.setTLS(true);

email.setFrom("test@example.com");

email.addTo(to);

email.setSubject(subject);

email.setHtmlMsg(htmlMsg);

email.send();

回答:

这是我的性能测试课程。使用一个连接发送邮件的速度快4倍,然后每次都重新打开连接(使用普通邮件时会发生这种情况)。使用多个线程可以进一步提高性能。

    Properties properties = System.getProperties();

properties.put("mail.smtp.host", server);

properties.put("mail.smtp.port", "" + port);

Session session = Session.getInstance(properties);

Transport transport = session.getTransport("smtp");

transport.connect(server, username, password);

for (int i = 0; i < count; i++) {

Message message = new MimeMessage(session);

message.setFrom(new InternetAddress(from));

InternetAddress[] address = {new InternetAddress(to)};

message.setRecipients(Message.RecipientType.TO, address);

message.setSubject(subject + "JavaMail API");

message.setSentDate(new Date());

setHTMLContent(message);

message.saveChanges();

transport.sendMessage(message, address);

}

transport.close();

以上是 如何在一个会话中发送多封电子邮件? 的全部内容, 来源链接: utcz.com/qa/398204.html

回到顶部