来源:http://blog.youkuaiyun.com/hbcui1984/article/details/5655657?reload
场景描述:
保存邮箱配置时自动探测邮箱配置参数是否正确,结果发现在探测SMTP时,系统报出如下异常:
javax.mail.MessagingException: 501 Command "HELO" requires an argument
at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363)
at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375)
at javax.mail.Service.connect(Service.java:275)
at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1363)
at com.sun.mail.smtp.SMTPTransport.helo(SMTPTransport.java:838)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:375)
at javax.mail.Service.connect(Service.java:275)
但是换一个windows服务器,发现就没这样的问题,仅在一台Linux服务器上可以重现,直观感觉就是这台Linux服务器某些配置有问题。
排查步骤
1. 找一台同样操作系统的Linux服务器,验证邮箱配置,ok,排除Linux操作系统特殊性的问题
2. 直接在Linux服务器上使用telnet连接对端邮件服务器的SMTP端口,OK,排除该服务器的网络问题
3. 查找HELO指令解释
::1 localhost6.localdomain6 localhost6
简单的将hosts文件修改如下:
127.0.0.1 mylocalserverdomain localhost
::1 localhost6.localdomain6 localhost6
127.0.0.1 mylocalserverdomain localhost
::1 localhost6.localdomain6 localhost6
6. 重新测试,问题解决了。
其实,这种情况也可以通过程序避免,即在session连接中加入当前服务器的hostname属性,程序示例:
public static void main(String[] args) {
try {
int smtpport = 25;
String smtpserver = "219.147.xxx.xxx";
Properties prop = System.getProperties();
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.localhost", "mylocalserverdomain");
Session mailSession = Session.getInstance(prop, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect(smtpserver,smtpport, "username", "password");
System.out.println("connect ok");
transport.close();
} catch (AuthenticationFailedException en) {
en.printStackTrace();
System.out.println("smtp服务器连接失败,请检查输入信息是否正确");
} catch (NoSuchProviderException e) {
e.printStackTrace();
System.out.println("smtp服务器连接失败,请检查输入信息是否正确");
} catch (MessagingException e) {
e.printStackTrace();
System.out.println("smtp服务器连接失败,请检查输入信息是否正确");
}
}

本文介绍了一种在特定Linux服务器上出现的SMTP连接异常问题,详细记录了问题排查过程及解决方案,包括对JAVAMAIL源码的分析及对/etc/hosts文件的调整。
657

被折叠的 条评论
为什么被折叠?



