JavaMail 中的 HELO 名称无效

Jul*_*lio 2 java email jakarta-mail

使用 JavaMail 发送邮件时出现以下错误。这是不寻常的,因为它已经工作了一段时间,直到现在还没有做出任何改变。

 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
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)
Run Code Online (Sandbox Code Playgroud)

我查看了RFC 文档,但不知道如何将其含义转换为 JavaMail 属性。

任何想法原因和任何解决方案表示赞赏。

sfu*_*ger 5

来自 JavaMail API 常见问题解答

问:尝试发送消息时收到“MessagingException:501 HELO 需要域地址”。答:SMTP 提供程序使用 SMTP HELO 命令中的 InetAddress.getLocalHost().getHostName() 结果。如果该调用无法返回任何数据,则 HELO 命令中不会发送任何名称。检查您的 JDK 和名称服务器配置,以确保该调用返回正确的数据。您还可以将“mail.smtp.localhost”属性设置为要用于 HELO 命令的名称。

这不是完全相同的错误消息,但这不会对您的情况产生影响。

因此,请确保将其设置为您的邮件服务器接受的内容。检查文档、配置或您当地的邮政局长,因为我无法告诉您那是什么。也许您只是发送被拒绝的“localhost”。尝试将其设置为实际解析为您的 IP 地址的主机名(如果可能)。

  • 下面有一个关于使用“mail.smtp.localhost”(和/或“mail.smtps.localhost”)属性来控制 JavaMail 发送的 HELO 名称的已删除答案。对我来说效果很好,所以我在这里为那些看不到已删除答案的人重复一遍。 (2认同)