550访问被拒绝 - 无效的HELO名称

时间:2011-12-17 04:35:40

标签: java smtp html-email

我正在使用快速通用邮件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

请帮我配置这个问题。

由于

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,当我通过客户端主机的名称时,一切都变好了 我在我的代码中添加了这一行:

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

祝你好运:)

答案 1 :(得分:1)

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

答案 2 :(得分:1)

也许这会有所帮助:

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);

答案 3 :(得分:0)

我遇到了同样的错误,启用以下属性后已修复:

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