【问题标题】:Invalid HELO name in JavaMailJavaMail 中的 HELO 名称无效
【发布时间】:2011-06-23 11:48:30
【问题描述】:

使用 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)

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

感谢任何想法和任何解决方案。

【问题讨论】:

  • 您是否尝试过来自命令提示符的邮件命令? SMTP 安全性有何变化?
  • 你用了什么 HELO 名字?

标签: java email jakarta-mail


【解决方案1】:

请尝试启用传输级安全性

spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true

【讨论】:

    【解决方案2】:

    From JavaMail API FAQ:

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

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

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

    【讨论】:

    • 下面有一个关于使用mail.smtp.localhost(和/或mail.smtps.localhost)属性来控制JavaMail发送的HELO名称的已删除答案。对我来说效果很好,所以我在这里为那些看不到已删除答案的人重复一遍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多