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");

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