项目中需要用到javamailAPI,邮箱服务器用的sohu闪电邮,SMTP协议用来发送,赋值代码:

Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.host", "smtp.sohu.com");gang
props.setProperty("mail.smtp.auth", "true");// 指定验证为true
props.setProperty("mail.debug", "true");// 开启debug日志,日志更详细

这段代码,写的比较早,记得当时可以发送成功的。大概过了半年吧,还是这段代码,但是发送邮件的时候,突然报错:

DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN failed
AUTH LOGIN failed;Invalid username or password
这个错误困扰了我一上午,NND,烦躁。网上什么解决方法都有,我试了,都不行。金模板,怎么办...
坚持,接着找,总会到达彼岸@@就这样自我鼓励,在stackofflow上,终于找到了一个类似的问题,虽然不完全一样,还得试试吧。
就在 上面的代码下又加了一句:props.put("mail.smtp.starttls.enable", "true");
mvn compile test,运行测试类,竟然成功了!!!!
成功的代码:

Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.host", "smtp.sohu.com");
props.setProperty("mail.smtp.auth", "true");// 指定验证为true
props.setProperty("mail.debug", "true");// 开启debug日志,日志更详细
props.put("mail.smtp.starttls.enable", "true");

注:
如果使用163,qq邮箱...等,需要使用授权码来登录邮箱服务器,所以在代码中,应该用授权码来替换密码!

posted on 2017-06-01 17:08  WesTward  阅读(6831)  评论(1编辑  收藏  举报