利用hutool配置发送邮件MessagingException异常处理

问题描述

hutool.version:5.7.9
mail.version:1.5.0-b01
利用hutool配置发送邮件,ssl认证也打开了,jdk下面的jre/lib/security/java.security文件中相关的ssl信息也去掉了,但是还是报错:
MessagingException: Could not connect to SMTP host: mail.seis.ac.cn, port: 465

网上大部分解决办法就是上面两种,下面分享第三种情况:

解决方案:

提示:MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
account.setCustomProperty(“mail.smtp.ssl.socketFactory”,sf);

// 完整代码

    public static void send(EmailVo emailVo, EmailConfig emailConfig){
    if(emailConfig.getId() == null){
        throw new BadRequestException("请先配置,再操作");
    } // 封装
    MailAccount account = new MailAccount();
    account.setHost(emailConfig.getHost());
    account.setUser(emailConfig.getUser());
    account.setPass(emailConfig.getPass());
    account.setPort(Integer.parseInt(emailConfig.getPort()));
    account.setFrom(emailConfig.getFromUser()+"<"+emailConfig.getFromUser()+">");
    //启动调试
    account.setDebug(true);
    // 开启SSL安全连接
    account.setAuth(true);
    account.setSslEnable(true);
    String content = emailVo.getContent();
    // 发送
    try {
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        account.setCustomProperty("mail.smtp.ssl.socketFactory",sf);
        //指定实现javax.net.SocketFactory接口的类的名称,这个类将被用于创建SMTP的套接字
        account.setSocketFactoryClass("javax.net.ssl.SSLSocketFactory");
        //如果设置为true,未能创建一个套接字使用指定的套接字工厂类将导致使用java.net.Socket创建的套接字类, 默认值为true
        account.setSocketFactoryFallback(true);
        // 指定的端口连接到在使用指定的套接字工厂。如果没有设置,将使用默认端口456
        account.setSocketFactoryPort(465);
        int size = emailVo.getTos().size();
        Mail mail = Mail.create(account)
                .setTos(emailVo.getTos().toArray(new String[size]))
                .setTitle(emailVo.getSubject())
                .setContent(content)
                .setHtml(true)
                //关闭session
                .setUseGlobalSession(false);

        if (emailVo.getFile() != null)
            mail.setFiles(emailVo.getFile());

        mail.send();

    }catch (Exception e){
        System.out.println(e.getMessage());
        throw new RuntimeException(e.getMessage());
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值