gpt4 book ai didi

java - 如何在一个 session 中发送多封电子邮件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:30:10 26 4
gpt4 key购买 nike

我想向不同的收件人发送数千封不同的电子邮件,并希望打开与我的 SMTP 的连接并保持它。我希望这会更快,然后重新打开 ervy 邮件的连接。为此,我想使用 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();

关于java - 如何在一个 session 中发送多封电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com