javamail 发送邮件(SSL)
Posted 吕展辉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javamail 发送邮件(SSL)相关的知识,希望对你有一定的参考价值。
写在前面的话:
由于需要部署服务到阿里云ESC服务器,里面涉及到一个发送邮件的功能,在本地我用的是一般发送方式(163邮箱),端口号25
但是,阿里把这个端口关闭了,所以需要换其他端口,阿里建议用ssl方式发送,并使用相应的端口,我就用465端口号,但是代码还是要调整的,需要发送ssl方式
原有的参数配置:
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(mailConfig.getSmtp());
Properties javaMailProperties = new Properties();
javaMailProperties.put("mail.smtp.auth", "true");
if(mailConfig.getTimeout() > 0)
{
javaMailProperties.put("mail.smtp.connectiontimeout", mailConfig.getTimeout() * 1000);
javaMailProperties.put("mail.smtp.timeout", mailConfig.getTimeout() * 1000);
}else
{
javaMailProperties.put("mail.smtp.connectiontimeout", MailConfig.TIMEOUT);
javaMailProperties.put("mail.smtp.timeout", MailConfig.TIMEOUT);
}
javaMailSender.setJavaMailProperties(javaMailProperties);
javaMailSender.setDefaultEncoding("GBK");
javaMailSender.setPort(mailConfig.getServerPort());
javaMailSender.setUsername(mailConfig.getUserName());
javaMailSender.setPassword(mailConfig.getPassword());
修改后的参数配置:
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setHost(mailConfig.getSmtp());
Properties javaMailProperties = new Properties();
javaMailProperties.put("mail.smtp.auth", "true");
if(mailConfig.getTimeout() > 0)
{
javaMailProperties.put("mail.smtp.connectiontimeout", mailConfig.getTimeout() * 1000);
javaMailProperties.put("mail.smtp.timeout", mailConfig.getTimeout() * 1000);
}else
{
javaMailProperties.put("mail.smtp.connectiontimeout", MailConfig.TIMEOUT);
javaMailProperties.put("mail.smtp.timeout", MailConfig.TIMEOUT);
}
//加认证机制
javaMailProperties.put("mail.smtp.starttls.enable", true);
javaMailProperties.put("mail.transport.protocol", "smtps"); // 启用smtps方式
javaMailSender.setJavaMailProperties(javaMailProperties);
javaMailSender.setDefaultEncoding("GBK");
javaMailSender.setPort(mailConfig.getServerPort());
javaMailSender.setUsername(mailConfig.getUserName());
javaMailSender.setPassword(mailConfig.getPassword());
javaMailSender.setProtocol("smtps");// 发送协议smtps
以上是关于javamail 发送邮件(SSL)的主要内容,如果未能解决你的问题,请参考以下文章
Javamail: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException 从 VPS 发送邮件时
Java + 腾讯企业邮箱 + javamail + SSL 发送邮件
Spring javamailsender 发送 SSL 电子邮件
Java Mail:在没有 SSL 的端口 25 上发送电子邮件时出现 SSLHandshakeException