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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章