在使用Apache Commons Email依赖通过微软 Outlook邮箱发送邮件时连接服务器失败并抛出了这个异常
查看该依赖源码后发现有email.setStartTLSEnabled()这个方法,于是试着启用了以下,然后成功解决了问题
email.setStartTLSEnabled(true);
问题分析:在使用ApacheCommonsEmail及之外的其他邮箱操作依赖时,发生此报错也都是因为没有开启STRATTLS,只要开启就能解决问题。
修改前的代码
public void sendEmail() throws EmailException {
HtmlEmail email = new HtmlEmail();
email.setCharset("utf-8");
email.setHostName("smtp.office365.com");
email.setSmtpPort(587);
email.setFrom("xxx@outlook.com","Star_Collecter");
email.setAuthentication("xxx@outlook.com","adhrwjskwixyfrlb");
email.addTo("xxx@xxx.com");
email.setSubject("标题");
email.setMsg("测试内容<br>测试内容<br>测试内容<br>测试内容");
email.send();
}
修改后的代码
public void sendEmail() throws EmailException {
HtmlEmail email = new HtmlEmail();
email.setCharset("utf-8");
email.setHostName("smtp.office365.com");
email.setSmtpPort(587);
email.setStartTLSEnabled(true);//添加的代码
email.setFrom("xxx@outlook.com","Star_Collecter");
email.setAuthentication("xxx@outlook.com","adhrwjskwixyfrlb");
email.addTo("xxx@xxx.com");
email.setSubject("标题");
email.setMsg("测试内容<br>测试内容<br>测试内容<br>测试内容");
email.send();
}