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 javax.mail.Service.connect(Service.java:156)
at com.dawning.gridview.app.alarmmanagement.service.alarmhandle.util.Mail.sendMail(Mail.java:67)
at com.dawning.gridview.app.alarmmanagement.service.alarmhandle.export.impl.AlarmHandleMailImpl.alarmHandle(AlarmHandleMailImpl.java:118)
at com.dawning.gridview.app.alarmmanagement.application.alarmhandle.schedulertask.HandleTask.execute(HandleTask.java:81)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
Caused by: javax.mail.MessagingException: 501 Command "HELO" requires an argument
程序在跟SMTP SERVER交互过程中需要发送HELO指令后面需要跟一个发起者的主机名,告诉SMTP服务器这个消息来源是哪里。
MTP常見的指令(SMTP command)包括下面幾種:
HELO:開始與 SMTP Server 送出的第一個指令,通常為 MUA 或 MTA 與伺服器打招呼用,通常使用 HELO 表示客戶端使用 SMTP 協議,而指令後跟隨的網域名稱,常被利用在反垃圾信的用途之上,所以該網域名稱必須能解析為 IP位址並且與目前連線的客戶端 IP位址相同.
首先查看文件/etc/sysconfig/network(本地使用,下面的主机名称tanchao是系统本身用到主机名,只在本机起作用。)
NETWORKING=yes
HOSTNAME=tanchao
然后在命令行下输入命令 hostname -i,如下错误:
hostname: Host name lookup failure
于是再查看文件/etc/hosts (网络中用的)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
发现主机名127.0.0.1 并没有tanchao,参考文章http://linux.ccidnet.com/art/302/20080326/1401805_1.html,于是修改为
127.0.0.1 tanchao
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
就成功了。具体原因应该是根据当前主机名tanchao 去/etc/hosts文件下查找映射关系,无法将tanchao映射到本机IP地址
参考网址:
http://blog.csdn.net/wyzxg/article/details/1840110
http://blog.csdn.net/hbcui1984/article/details/5655657
http://linux.ccidnet.com/art/302/20080326/1401805_1.html