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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值