1

我需要在 java 中设计一个可以发送 200-300 封邮件/秒的应用程序。如何完成它。我尝试了简单的 Transport.send() 一次发送一封邮件,但它本身大约需要 2-3 秒。google smtp 也允许我每秒发送这么多邮件吗?!如何实现批量邮件发送或多线程等帮助?

4

2 回答 2

2

Transport.send() 不是发送大量邮件的有效方法,因为它会为每封邮件打开新的连接。每条消息的平均时间约为 4 秒。

试试下面的代码:

Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator() {  
        protected PasswordAuthentication getPasswordAuthentication() {  
            return new PasswordAuthentication("FROM","PASSWORD");  
        }  
    });
Transport transport = session.getTransport("smtp");
transport.connect();
try{
   for(Message m : messages) {
   transport.sendMessage(m, m.getAllRecipients()); // time decreased to 2 second/message
   }
}finally {
t.close();
}

此外,您可以尝试使用具有固定数量线程的 ThreadPool 来实现,具体取决于您拥有的系统。

于 2016-11-22T09:26:25.670 回答
1

是的,您需要一个多线程服务器。正如您所写,您将使用大约 1000 个线程进行发送,从 CPU 性能的角度来看,这在任何硬件上都是可行的,但您也必须有足够的内存。

于 2013-11-13T14:15:06.567 回答