JavaMail - 无效的HELO名称

时间:2013-01-07 16:10:52

标签: java email smtp javamail

我曾经运行过每两个小时发送一封电子邮件的服务器应用,但有时我会收到以下错误:

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参数。我已经阅读了下面的链接,但是再次,没有用,所以我用尽了解决这个问题的替代方案,任何帮助将不胜感激:)

Invalid HELO name in JavaMail

550 Access denied - Invalid HELO name

1 个答案:

答案 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服务器没有主动限制对未知或未经身份验证的主机的访问。