您的位置:首页 > 大数据 > 人工智能

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

2018-03-04 23:15 441 查看
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
发件箱/收件箱同为注册的企业邮箱账号:yh@abrasivesyh.com账号已开通可以正常使用无任何问题。另注:





上面说明的是场景。
开发在WIN下本地开发测试,上传到腾讯云服务器部署。
下面说测试代码:
public static void sendHTMLMail(MailInfoNode mailInfoNode) throws EmailException {
try {
HtmlEmail email = new HtmlEmail();
// 配置信息
email.setHostName(“smtp.exmail.qq.com”);
email.setFrom("yh@abrasivesyh.com", "yh");
email.setAuthentication(“发件箱用户名”,“发件箱用户对应密码”);
email.setCharset(“utf-8”);
email.setSubject("测试一下");
email.setHtmlMsg("内容:<h1>测试内容</h1>");
// 收件人
email.addTo("yh@abrasivesyh.com");
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端口存在问题。经网上查找:





将端口号改为:465,添加如下代码:
email.setSmtpPort(465);

本地测试:



服务器同样错误!!!!
添加如下代码:
email.setSSLOnConnect(true);

本地执行:



服务器执行同样成功!!

问题总结:
1.邮件发送部署在云服务器上时,不要使用默认的端口(25),一般默认是禁掉的,除非解禁。通常改为465端口。
2.如果使用465端口,一定要采用SSL加密方式,否则同样失败。email.setSSLOnConnect(true);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  异常处理