1.首先说明一下场景:

邮件服务器为:腾讯的企业邮箱服务器,

有文档说明:http://service.exmail.qq.com/cgi-bin/help?id=28&no=1000585&subtype=1

POP3/SMTP协议
接收邮件服务器:pop.exmail.qq.com ,使用SSL,端口号995
发送邮件服务器:smtp.exmail.qq.com ,使用SSL,端口号465
海外用户可使用以下服务器
接收邮件服务器:hwpop.exmail.qq.com ,使用SSL,端口号995
发送邮件服务器:hwsmtp.exmail.qq.com ,使用SSL,端口号465

发件箱/收件箱同为注册的企业邮箱账号:[email protected]

账号已开通可以正常使用无任何问题。另注:

关于common-email 发送邮件失败问题!!!

关于common-email 发送邮件失败问题!!!

上面说明的是场景。

开发在WIN下本地开发测试,上传到腾讯云服务器部署。

下面说测试代码:

public static void sendHTMLMail(MailInfoNode mailInfoNode) throws EmailException {
try {
HtmlEmail email = new HtmlEmail();
// 配置信息
email.setHostName(“smtp.exmail.qq.com”);
email.setFrom("[email protected]", "yh");
email.setAuthentication(“发件箱用户名”,“发件箱用户对应密码”);
email.setCharset(“utf-8”);
email.setSubject("测试一下");
email.setHtmlMsg("内容:<h1>测试内容</h1>");
// 收件人
email.addTo("[email protected]");
email.send();
System.out.println("邮件发送成功!");
System.out.println(email.getSmtpPort());
} catch (EmailException e) {
System.out.println("邮件发送失败!");
throw e;
}

}

相关jar引入后,本地执行执行上面代码,无任何问题!注意看输入的端口是25,可以确定默认是25端口发送。将代码部署到云服务器上,执行报:

org.apache.commons.mail.EmailException: Sending theemail to the following server failed : smtp.exmail.qq.com:25 

atorg.apache.commons.mail.Email.sendMimeMessage(Email.java:1138) 

atorg.apache.commons.mail.Email.send(Email.java:1163) 

atcom.newer.servlet.EmailServlet.doPost(EmailServlet.java:45) 

.....

可以发现是连接25端口失败,下面还有个连接超时。这说明25端口存在问题。经网上查找:

关于common-email 发送邮件失败问题!!!

关于common-email 发送邮件失败问题!!!

将端口号改为:465,添加如下代码:

email.setSmtpPort(465);

本地测试:

关于common-email 发送邮件失败问题!!!

服务器同样错误!!!!

添加如下代码:

email.setSSLOnConnect(true);

本地执行:

关于common-email 发送邮件失败问题!!!

服务器执行同样成功!!


问题总结:

1.邮件发送部署在云服务器上时,不要使用默认的端口(25),一般默认是禁掉的,除非解禁。通常改为465端口。

2.如果使用465端口,一定要采用SSL加密方式,否则同样失败。email.setSSLOnConnect(true);

相关文章:

  • 2022-12-23
  • 2021-11-24
  • 2022-12-23
  • 2021-09-21
  • 2022-12-23
  • 2021-12-19
  • 2021-12-10
  • 2021-05-19
猜你喜欢
  • 2021-12-21
  • 2021-12-18
  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
相关资源
相似解决方案