- 1、 安装mailx
yum –y install mailx
- 2、 生成证书
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ > ~/.certs/qq.crt
certutil -A -n “GeoTrust SSL CA” -t “C,” -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n “GeoTrust Global CA” -t “C,” -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n “GeoTrust SSL CA - G3” -t “Pu,Pu,Pu” -d ~/.certs/./ -i qq.crt
certutil -L -d /root/.certs
- 3、 修改mail.rc
Vi /etc/mail.rc
set from=example@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=example@qq.com
set smtp-auth-password=**************
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs
说明:如果是465端口,需要加上smtps://协议;如果是587端口,不需要加smtps://或者写smtp://;
如果使用587端口通讯,应当显示设置smtp-use-starttls;
邮件的来源应当与邮箱相同,或者将发信人姓名写在邮箱后的括号中。例如:set from=user@xxxx.com或set from=user@xxx.com(nickname);如果邮箱与认证的不一致,将出现“smtp-server: 553 Mail from must equal authorized user”的错误;
有些邮件服务器的587端口不是使用STARTTLS而是SMTPS,此时仍需加上smtps://协议,例如126邮箱。
- 4、 发送邮件
echo “hello world” | mail -s ‘didi’ xxxx@163.com
- 5、 把证书放进tomcat默认路径
- 6、 cd /usr/java/jre1.8.0_73/lib/security/
keytool -import -alias cm.crt -keystore cacerts -file /usr/.certs/cm.crt -trustcacerts
密码:changeit
Yes
7、 修改代码,实现java发送邮件
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = “javax.net.ssl.SSLSocketFactory”;
//设置邮件会话参数
Properties props = new Properties();
//邮箱的发送服务器地址
props.setProperty(“mail.smtp.host”, “smtp.qq.com”);
props.setProperty(“mail.smtp.socketFactory.class”, SSL_FACTORY);
props.setProperty(“mail.smtp.socketFactory.fallback”, “false”);
//邮箱发送服务器端口,这里设置为465端口
props.setProperty(“mail.smtp.port”, “465”);
props.setProperty(“mail.smtp.socketFactory.port”, “465”);
props.put(“mail.smtp.auth”, “true”);
final String username = "xxxx@qq.com"; //发送者邮箱用户名
final String password = “xxxxxxx”;