Loading

使用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;
    }

 

posted @ 2021-03-18 14:53  Roc-xb  阅读(124)  评论(0)    收藏  举报

易微帮源码


易微帮官网