【问题标题】:550 Access denied - Invalid HELO name550 访问被拒绝 - HELO 名称无效
【发布时间】:2012-01-22 11:29:09
【问题描述】:

我正在使用 apace 通用邮件 API 来发送 html 电子邮件。以下是我的代码。

public void sendHTMLMail(String to, String subject, String message , String from) throws EmailException
    {

          HtmlEmail email = new HtmlEmail();
          email.setHostName(SMTP_HOST_NAME);
          email.addTo(to);
          email.setFrom(from, "just-flick");
          email.setSubject(subject);
          email.setSmtpPort(25);
          email.setHtmlMsg(message);
          email.setTextMsg("Your email client does not support HTML messages");
          email.send();

    }

但在运行程序时出现以下错误。

Exception in thread "main" org.apache.commons.mail.EmailException: Sending the e
mail to the following server failed : mail.just-flick.com:25
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
    at org.apache.commons.mail.Email.send(Email.java:1267)
    at bseller.mail.SendMail.sendHTMLMail(SendMail.java:105)
    at bseller.mail.SendMail.main(SendMail.java:31)
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 550 Access denied - Invali
d 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 org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
    ... 3 more

请帮我配置这个问题。

谢谢

【问题讨论】:

  • 你没有正确问候服务器:(
  • 您好,感谢您的回答,请帮帮我。我是 SMTP 服务器配置的新手。
  • 请记住,您始终可以“远程登录”到 SMTP 服务器并尝试发出 HELO 命令以查看哪些工作/失败。
  • "Your email client does not support HTML messages"错了,应该是"Your email client is configured to prefer what you prefer instead of what we prefer you to prefer"

标签: java smtp html-email


【解决方案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】:

    我也遇到过同样的问题,当我传递客户端主机的名称时,一切都正常了 我已经在我的代码中添加了这一行:

    props.put("mail.smtp.localhost", client or host name which connect to mail server);
    

    祝你好运:)

    【讨论】:

      【解决方案3】:

      也许这会有所帮助:

      email.getMailSession().getProperties().setProperty("mail.smtp.localhost", "www.example.com");

      当然,将 www.example.com 替换为您发送邮件的主机的域名。

      但是,正如 David Schwartz 所写,您的邮件配置也不完美。现在我们不会将邮件提交到 25 端口。使用 587 端口进行提交,该端口的规则比较宽松,但如果您的 IP 地址不在白名单中,则可能需要进行身份验证。按照 pst 在他的评论中给出的链接。

      奇怪的是,JavaMail 单独工作,而 Apache Commons Email 没有,因为我猜 Commons Email 也使用了 JavaMail。这可能表明某处存在错误,但需要进一步调查。

      您的问题之一是您不知道要发送的确切 HELO 名称。以下代码可能有助于确定它,否则请致电您的邮件管理员(尤其是因为他可能会在端口 587 上为您提供建议)。

      email.getMailSession().setDebug(true);

      【讨论】:

      • 这拯救了我的一天
      【解决方案4】:

      这应该由您的邮件服务器的管理员处理,而不是由您处理。与告诉您连接到该邮件服务器的人交谈。

      【讨论】:

      • 但是当我使用普通的 java API 时它工作正常,但是当我使用 Apache 的 common-mail API 时,它不工作。我很确定我需要做一些额外的配置。但不确定是什么配置。谢谢
      • 邮件服务器的管理员会知道的。是邮件服务器拒绝您的访问。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      相关资源
      最近更新 更多