在实现一个用户 passport 系统或者其他大型系统的时候, 常常需要使用给用户发送邮件的功能, 下面介绍整套解决方案.
- 添加项目依赖
在 maven 配置文件 pom.xml 中添加如下依赖:
1 | <dependency> |
- 实现邮件发送类
实现发送邮件功能的代码如下:
1 | package com.vipshop.passport.mail; |
- 导入证书文件
这里使用的 SSL 邮件加密的方案, 但是有时会抛出如下的异常, 通常也发生在第一次调用发送功能的时候:
1 | Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: smtp.server.com, port: 465; |
网上查了一些资料, 一般都是由于 SSL 证书找不到引起的异常, 我们需要给 JRE 导入 smtp 服务器的证书文件.
下面我们来实现一个证书的下载类:
1 | package com.vipshop.passport.mail; |
我们直接执行这个类:
java package com.vipshop.passport.mail.InstallCert smtp.server.com:465
将直接显示可下载的证书:
1 | Loading KeyStore /home/dan/tools/jdk1.6.0_35/jre/lib/security/cacerts... |
输入1
并回车后会将证书下载到当前文件夹中的smtp.server.cert. 之后将这个文件放到$JAVA_HOME/jre/lib/security, 重新执行发送的程序, 已经可以正常发送了.