james-2.3.2.1发邮件慢,不能多线程同时发

最近发现服务器邮件队列里面有2000多封待发,找了2天才找到原因。

现象:

为在其他SMTP客户端发送邮件正常,在服务器本机发送邮件要卡一分钟,多线程的情况下要卡3分钟。

最后发现在服务器本机的客户端根本发不出邮件。

由于try-catch使用不当,导致错误信息也没报出来,实际出错的地方是javax.mail.Transport.send().

报了:

  1. javax.mail.MessagingException: 501 Domain address required: HELO
  2. at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481)
  3. at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:917)
  4. at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:417)
  5. at javax.mail.Service.connect(Service.java:288)
  6. at javax.mail.Service.connect(Service.java:169)

原因:

是因为服务器的hostname引起的。

可以通过hostname命令找到名字,然后用ping命令看能否ping通。

结果肯定是不通的。

解决方案:

修改/etc/hosts文件,将host那么加到127.0.0.1那一行的最后。

原文地址:https://www.cnblogs.com/real-bert/p/14689022.html