如何解决Java Mail下的530错误

玩了一下Java Mail,试图使用QQ邮箱作为发送者的邮箱,当然填写在代码中的邮箱密码写的是明文真实密码啦。
喜闻乐见的是出现了error 530,这个错误的产生实际上也是腾讯对自己邮箱用户的保护机制啦。其一是谁也不希望自己的产品被克隆。其二是用户异常操作时,找不到操作记录,是不是很扎心?

于是,兜了一大圈,再回到正题上来。

1
javax.mail.AuthenticationFailedException: 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28

530报错提示需要一个安全的链接(比如ssl啦stl啦),这里就po一下ssl加密的代码吧。(其实stl也差不多的啦~

1
2
3
4
5
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);

prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);

把它加进自己的代码里就阔以啦。
当然,邮箱里的POP3/SMTP服务与IMAP/SMTP服务就开起来吧。
嗯,还有,为了防止邮箱密码泄漏,腾讯给了每个用户数个登录第三方客户端的授权码,也就是可以当作密码使用的一段16位无序字母组合,那么,玩得开心。

相关链接
关于Java Mail简单粗暴的教程(菜鸟教程)
如何使用 Foxmail 等软件收发邮件?(腾讯)
什么是 IMAP,它又是如何设置?(腾讯)