class javax.mail.MessagingException: 554 DT:SPM 163 smtp9

使用javaMail發送郵件,在使用163郵箱向其他郵箱發送郵件,報如下錯誤,根據提示查看網易郵箱退信常見問題,看到返回碼554對應的是“發送的郵件內容包含了未被許可的信息,或被系統識別爲垃圾郵件。請檢查是否有用戶發送病毒或者垃圾郵件”這個錯誤。


javax.mail.SendFailedException: Sending failed;

  nested exception is:
class javax.mail.MessagingException: 554 DT:SPM 163 smtp9,DcCowADnv1gYABNZZl4fDw--.19713S2 1494417432,please see http://mail.163.com/help/help_spam_16.htm?ip=112.2.4.140&hostid=smtp9&time=1494417432


at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at email.MainUtil.sendMail(MainUtil.java:69)

at email.MainUtil.main(MainUtil.java:73)


但是發給自己的郵箱是可以發送的,網上查資料說配置信息不完整,按照資料上面的提示增加代碼

// 設置傳輸協議
props.setProperty("mail.transport.protocol", "smtp");
// 便於調試
props.put("mail.debug", "true");

加入debug配置後,打印日誌報如下錯誤

DEBUG: java.io.FileNotFoundException: D:\Program Files (x86)\Java\jdk1.7.0_01\jre\lib\javamail.providers (系統找不到指定的文件。)

但是網上說這個配置文件的加載順序如下

 Session在加載配置文件時會按照以下優先級順序進行:

       1)首先使用<JAVA_HOME>/lib中的javamail.providers;

       2)如果1)不存在相應的配置文件,使用類路徑下mail.jar中META-INF目錄下的javamail.providers;

       3)如果2)不存在相應的配置文件,使用類路徑下的mail.jar中META-INF目錄下的javamail.default.providers;

       所以開發者可以在<JAVA_HOME>/lib目錄下提供配置文件覆蓋mail.jar/META-INF目錄中廠商的配置。但是,一般情況下,我們無須這樣做。

參考鏈接:http://blog.csdn.net/cyzero/article/details/27087685

而且日誌中也打出來  DEBUG: successfully loaded resource: /META-INF/javamail.default.providers

看來不是這個原因,繼續查資料發現在設置主機host的時候少了一個單詞smtp,之前寫的是mail.host,下面是正確的寫法,修改後能正常發送郵件,具體什麼原因我也不知道,我也是菜鳥(還請路過大神指導下^_^)

props.setProperty("mail.smtp.host", "smtp.163.com");

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