今天公司邮箱服务器,更改必须TLS安全认证,原来java mail 邮件发送出现异常:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExcep
该异常是客户端对服务器的证书认证的时候出错了,解决方案把服务器证书加到信任证书库里面
把该证书导入java中的cacerts证书库里
假设jdk安装目录:C:\Program Files\Java\jdk1.7.0_80\jre\lib\security
cmd命令行跳到这个目录
执行keytool -import -alias cacerts -keystore cacerts -file d:\software\CA.cer
此时命令行会提示你输入cacerts证书库的密码,
敲入changeit,这是java中cacerts证书库的默认密码
导入后用-list查看。
重启服务后,发送邮件正常。
ps:tomcat、junit运行时会从默认路径加载cacerts文件,如果main方法执行可以通过环境变量指定信任证书库路径。