Smtp 使用JavaMail API发送批量邮件的更好方法

Smtp 使用JavaMail API发送批量邮件的更好方法,smtp,jakarta-mail,email-client,Smtp,Jakarta Mail,Email Client,有没有更好的方法使用JavaMail API发送批量邮件 enter code here Transport tr = session.getTransport("smtp"); tr.connect(smtphost, username, password); tr.sendMessage(msg, msg.getAllRecipients()); 我过去经常用同一个连接发送“n”个邮件。 我有任何其他单独的方式发送批量邮件。请帮助我在这方面获得更好的解决方案 你希望它以什么方式“更好” 您

有没有更好的方法使用JavaMail API发送批量邮件

enter code here Transport tr = session.getTransport("smtp");
tr.connect(smtphost, username, password);
tr.sendMessage(msg, msg.getAllRecipients());
我过去经常用同一个连接发送“n”个邮件。 我有任何其他单独的方式发送批量邮件。请帮助我在这方面获得更好的解决方案


你希望它以什么方式“更好”

您可以使用多个线程并行发送更多消息,
达到邮件服务器允许的限度。

您可以使用线程池,因为它提供了非常好的性能。我已经实现并与您分享了下面的代码片段

试试{
ExecutorService executor=Executors.newFixedThreadPool(“线程数”);
//线程的数量取决于cpu/内存的使用情况。最好使用不同数量的线程进行测试。
Runnable worker=新的MyRunnable(消息);
//消息是javax.mail.message
执行人,执行人(工人);
executor.shutdown();
执行器等待终止(Long.MAX_值,时间单位为毫秒);
}

我的建议是在java mail API周围使用一些包装器,比如Apache mail API假设如果我们有不同的消息集,如何在一次推送中发送它们。而不是一个接一个地发送。我不理解“不同的信息集”。如果要在邮件的“收件人”标题中列出邮件的收件人,则需要为每个收件人或收件人集发送不同的邮件。如果未包含收件人(这会使您的邮件看起来更像垃圾邮件),则可以通过将收件人作为第二个参数传递给sendMessage,将单个邮件发送给多个收件人。发票1通知需要发送给5个成员,发票2需要发送给另一组5个成员。假设这是一个场景,我需要在一次推送中发送这两个不同的集合,而不是使用sendMessage方法逐个发送它们。我知道有任何方法可以一次推送发送这些消息。您可以通过调用“connect”一次,然后调用“sendMessage”两次来重新使用连接,两条不同的消息各调用一次,这就是您所说的“single push”的意思吗?请花些时间在您的答案中正确设置代码格式,谢谢。