我曾经运行过每两个小时发送一封电子邮件的服务器应用,但有时我会收到以下错误:
Não foi possível enviar a mensagem.
Mensagem: com.sun.mail.smtp.SMTPSendFailedException: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
Jan 07, 2013 1:00:32 PM job_hidrojato.comunicacao.email.Email run
SEVERE: null
com.sun.mail.smtp.SMTPSendFailedException: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at job_hidrojato.comunicacao.email.Email.run(Email.java:186)
at java.lang.Thread.run(Thread.java:722)
我已经尝试使用下面的代码显式定义mail.smtp.localhost,其中“HADES”是我服务器的主机名,但它不起作用。
props.put("mail.smtp.localhost", "HADES");
此更改后生成的错误日志是相同的,因此我认为问题不是hostname参数。我已经阅读了下面的链接,但是再次,没有用,所以我用尽了解决这个问题的替代方案,任何帮助将不胜感激:)
答案 0 :(得分:1)
如果你查看RFC2811第4.1.1.1节,它说(强调我的):
这些命令用于标识SMTP的SMTP客户端 服务器。参数字段包含完全限定的域名 SMTP客户端(如果有)。在其中的情况 SMTP客户端系统没有有意义的域名(例如,何时 它的地址是动态分配的,没有反向映射记录 可用),客户端应该发送地址文字(参见章节) 4.1.3),可选地随后是有助于识别的信息 客户系统。
名称HADES
不是完全限定的域名(主机名+域名,例如www.example.com
,FQDN的某些定义也需要一个点到末尾(即www.example.com.
但我我不确定SMTP是否需要这样做。如果你没有FQDN,你应该使用地址文字(参见4.1.3地址文字部分),它基本上就是IP地址。
另外请确保您的SMTP服务器没有主动限制对未知或未经身份验证的主机的访问。