javamail错误解决办法:

场景1:本地测试良好,一上服务器就崩

报错:

com.sun.mail.util.MailConnectException: Couldn't connect to host

原因:在本地调试javamail端口为25,在服务器上默认阻止25出端口,需要更改安全组来开放端口,华为云测试开发所有端口均无效,此处建议更改端口,方法简单且无副作用

代码如下

 mail:
    username: ####
    password: ###
    host: ###
    port: 465
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          socketFactory:
            port: 465
            class: javax.net.ssl.SSLSocketFactory
            fallback: false
        smth:
          auth: true
          strttls:
            enable: true
            required: true

此处用了yaml语法,更改port为465,下面还要进行socketFactory的设置,设置完成后基本没有其他问题即可正常启动项目

场景2:用163邮箱发送邮件,本地测试正常,服务器测试报错

报错:

com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 163 smtp12,EMCowABnTLCKm2hdk5MQCQ--.33086S2 1567136651,please see http://mail.163.com/help/help_spam_16.htm?ip=xxxxx&hostid=smtp12&time=1567136651

原因:你的邮件被当做垃圾邮件没有发送出去, 554DT:SPM  ,

解决办法:

1.检查邮件内是否有test、测试等字样,有的话改掉,163会过滤掉此类邮件,不允许发送(测试失败

2.把邮件内中文符号替换为英文符号(测试失败)

3.最终解决办法,不用163邮箱,改用qq邮箱,真的吐槽163的垃圾,如果有顾虑更改后服务配置麻烦,直接复制我的代码即可使用,上面那个,填上username,password,host即可

另注意若无其他配置,需要在把发送的人填上username,如下

 SimpleMailMessage message = new SimpleMailMessage();
        message.setSubject("xxxxx");//设置邮件标题
        message.setText("xxx");
        message.setTo(sendTo);
        message.setFrom("这里一定要用自己配置的username");
        javaMailSender.send(message);

       有问题联系我qq 1841301607

发布了29 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42568510/article/details/100154914
今日推荐