javax.mail.MessagingException: 501 5.0.0 HELO requires domain address

http://zouhuajian01.blog.163.com/blog/static/117698772011813481028/

今天部署了个james邮件服务器,没有后在windows上正常,可是到linux就有问题了。一看日志,到了个501错。
javax.mail.MessagingException: 501 5.0.0 HELO requires domain address  。
查了查,原来是


系统利用 mail.jar 组件发送邮件,

Javamail 在提取本地 hostname 的时候会 dig 该 hostname ,然后以该 ip 发送邮件。

由于 hostname 对应的 ip 地址, linux 无法解析(如果是 windows 则无这个问题, windows 利用 netbios 协议去获得该主机的 ip 地址)到本机 hostname 的 ip ,导致 javamail 无法调用发送 ip 。  

解决办法:

在有利用到 javamail 的所有主机重写 hosts 文件或者在 dns 服务器上设置该主机名的 ip 就可以解决这个问题。

如自己在code里面set写localhost:

MimeMessage message = null;

props.put("mail.smtp.host", "mail.pccw.com");
  
   props.put("mail.smtp.localhost", "localHostAdress");


props.put("mail.smtp.port", "25");

props.put("mail.smtp.auth", "false");

message =  new MimeMessage(sendsession);



如上面加背景色的代码就可以解决这个问题。




PS:
这个错误的javamail 在发送helo 命令的时候找不到 hostname,直接发送helo命令
所以postfix返回了 501 Syntax: HELO hostname

你可能感兴趣的:(exception)