我正在使用快速通用邮件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
请帮我配置这个问题。
由于
答案 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