关于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);
邮件服务器为:腾讯的企业邮箱服务器,
有文档说明: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);
相关文章推荐
- 关于JDK8发送邮件失败的问题
- 关于java使用网易服务器smtp.163.com发送邮件,连接失败的问题
- 关于crontab定时任务执行失败发送报错邮件的问题
- Jenkins使用Email Extension Plugin插件发送邮件失败问题小记
- Java Mail 发送邮件失败问题:Sending the email to the following server failed
- 关于第三方应用程序通过exchange2010发送邮件失败问题
- android平台phonegap开发中使用EmailComposer插件发送邮件带附件失败的问题总结
- 关于使用commons-email包测试发送邮件遇到的问题
- 关于使用commons-email包测试发送邮件遇到的问题
- 关于Javaemail发送邮件时遇到的问题
- 关于GMAIL无法发送邮件问题解决的办法
- 关于outlook不能发送126邮件的问题
- 关于如GMail等邮箱每天可发送邮件量额度的问题
- apache commons-email发送邮件乱码问题
- 关于在使用Exchange2003系统时无法向sina,yahoo,hotmail等邮箱发送邮件问题的解决方法
- System.Net.Mail 发送邮件时,身份认证失败的问题
- 终于完全解决了,关于Mail无法发送邮件的问题(转载)
- 关于asp.net 发送邮件问题
- 关于服务器上发送邮件程序发送失败的解决方案
- 关于微信服务号自定义发送给朋友/分享到朋友圈, 发送/分享失败的一些问题及解决方式