Javamail, Transport.send() 很慢

标签 java jakarta-mail bulk mass-emails

我写了一个批量发送电子邮件的方法,但它非常非常慢(每 10 秒大约 3 封邮件)。我想发送数千封邮件。有什么方法可以更快地做到这一点?

我现在正在使用 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;
     }
}

最佳答案

好的,谢谢你的建议。

我的解决方案是:

Transport transport = session.getTransport("smtp");
transport.connect(this._properties.getProperty("mail.smtp.host"), 
Integer.parseInt(this._properties.getProperty("mail.smtp.port")),
    this._properties.getProperty("mail.smtp.user"),
    this._properties.getProperty("mail.smtp.password"));

Address[] addr = new Address[this._addresses.size()];
for (int i = 0, c = this._addresses.size(); i < c; i++)
{
    addr[i] = new InternetAddress(this._addresses.get(i));
}

transport.sendMessage(message, addr);

关于Javamail, Transport.send() 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12515420/

相关文章:

java - 如何将对象数组传递给方法

Java MultiChoice,2 个错误答案?

java - Web 服务上的空指针异常

java - 使用java和gmail发送邮件

node.js - 使用 NodeJs 发送原始电子邮件文件

java - 仅从 txt 文件中读取整数并将每个找到的值相加

java - 如何使用 JavaMail API 通过 Java 发送电子邮件中的二进制附件?

java - 使用 GMailSender 从 Android 应用程序发送带有附件的电子邮件在 Transport.send 处失败

java - 快速休息调用执行

email - 使用 SendGrid SMTP 集成处理批量电子邮件