使用hutool发送QQ邮件在windows正常,linux发送报错。
在使用Hutool工具进行QQ邮件发送的时候,在windows下邮件发送正常,但是在linux下邮件发送失败,经过各种定位分析,最终找到问题的根源,在linux下发送邮件需要开启SSL验证。如果未开启SSL验证,将可能会报异常:
MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1,会导致邮件发送失败。本文只展示自定义邮件服务器发送方式,更多邮件发送方式可以参考:Hutool邮件发送工具
/**
* 发送HTML邮件
*
* @param parms 邮件配置参数
* @param adressees 收件人列表
* @param title 邮件标题
* @param html 邮件内容
* @return 是否成功
*/
public static boolean sendHtmlEmail(Map<String, Object> parms, List<String> adressees, String title, String html) {
boolean flag = true;
try {
MailAccount account = new MailAccount();
// 邮件服务器地址
account.setHost((String) parms.get("host"));
// 服务端口 默认:465
account.setPort((Integer) parms.get("port"));
// 是否开启验证
account.setAuth(true);
// 发件人
account.setFrom((String) parms.get("from"));
// 用户名
account.setUser((String) parms.get("user"));
// 授权码
account.setPass((String) parms.get("pass"));
// 开启SSL安全连接
account.setSslEnable(true);
//指定实现javax.net.SocketFactory接口的类的名称,这个类将被用于创建SMTP的套接字
account.setSocketFactoryClass("javax.net.ssl.SSLSocketFactory");
//如果设置为true,未能创建一个套接字使用指定的套接字工厂类将导致使用java.net.Socket创建的套接字类, 默认值为true
account.setSocketFactoryFallback(true);
// 指定的端口连接到在使用指定的套接字工厂。如果没有设置,将使用默认端口456
account.setSocketFactoryPort(465);
MailUtil.send(account, adressees, title, html, true);
} catch (Exception e) {
flag = false;
}
return flag;
}

浙公网安备 33010602011771号