4
我已经写了一个批量发送电子邮件的方法,但是它非常慢(每10秒约3封邮件)。我想发送数千封邮件。有没有办法做得更快?Javamail,Transport.send()很慢
我现在使用gmail,但只用于测试,最后我想用我自己的SMTP服务器发送。
下面是代码:
public boolean sendMessages()
{
try
{
Session session = Session.getInstance(this._properties, new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user", "password");
}
});
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(this.getFrom()));
message.setSubject(this.getSubject());
message.setText(this.getBody());
for (int i = 0, c = this._addresses.size(); i < c; i++)
{
message.setRecipient(Message.RecipientType.TO, new InternetAddress(this._addresses.get(i)));
Transport.send(message);
}
return true;
}
catch(AuthenticationFailedException e) {
e.printStackTrace();
return false;
}
catch(MessagingException e) {
e.printStackTrace();
return false;
}
}
我期望的限制是服务器如何快速接受电子邮件。你应该期望你自己的邮件服务器处理速度超过每秒10。 –
您可以通过将Transport.send调用替换为:message.saveChanges();来测量JavaMail可以创建消息的速度。 message.writeTo(new BufferedOutputStream(new FileOutputStream(“msg.txt”)));如果发送到您的服务器比这慢,这很可能是由于网络性能,协议开销或服务器的速度。 –
['MimeMessage.saveChanges'可以触发DNS查找](https://stackoverflow.com/questions/44435457/mimemessage-savechanges-is-really-slow)这将甩掉你的基准。 – jmehrens