spring mail发送TLS邮件
2016-04-30 15:47
381 查看
使用spring mail发送邮件相当简单,归结起来是一段代码+一段配置
近日遇到了需要TLS加密才能发送SMTP的情况
最初遇到如下问题“PKIX path building failed“,查阅的方法需要先用生成证书,将生成的证书拷贝到$JAVA_HOME/jre/lib/security的路径。
单这种方式比较麻烦,而需要TLS加密发送,本质上就是本地要支持证书,因此只需要将java mail配置为所有证书都默认放过而不做验证,发送前添加如下代码:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="${mail.host}" /> <property name="port" value="${mail.port}" /> <property name="username" value="${mail.username}" /> <property name="password" value="${mail.password}" /> </bean>
@Autowired protected JavaMailSender mailSender; public SendResult send(List<String> targets, String title, String content) { SendResult result = new SendResult(false); MimeMessage mimeMsg; try { mimeMsg = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true, "utf-8"); helper.setTo(targets.toArray(new String[targets.size()])); helper.setSubject(title); helper.setText(content, true); helper.setFrom(mailUserName); mailSender.send(mimeMsg); } catch (Exception e) { LogUtil.error(logger, e, "send email error: " + e.getMessage()); } return result; }
近日遇到了需要TLS加密才能发送SMTP的情况
最初遇到如下问题“PKIX path building failed“,查阅的方法需要先用生成证书,将生成的证书拷贝到$JAVA_HOME/jre/lib/security的路径。
单这种方式比较麻烦,而需要TLS加密发送,本质上就是本地要支持证书,因此只需要将java mail配置为所有证书都默认放过而不做验证,发送前添加如下代码:
if (openTlsAuth) { JavaMailSenderImpl impl = (JavaMailSenderImpl) mailSender; MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); impl.getJavaMailProperties().put("mail.smtp.ssl.socketFactory", sf); impl.getJavaMailProperties().put("mail.smtp.auth", true); impl.getJavaMailProperties().put("mail.smtp.starttls.enable", true); impl.getJavaMailProperties().put("mail.smtp.ssl.trust", "*"); }
相关文章推荐
- java接口Interface
- 【struts2】我的入门小例子
- XML之StAX(二)
- java内存模型
- Java基础——List接口
- java抽象类
- Java构造和解析Json数据的两种方法详解二
- Java构造和解析Json数据的两种方法详解一
- spring data JPA
- 轻松搞定java内存模型(三)判断对象是否应该被回收
- Java注解(二) 系统注解
- OpenJDK Runtime Environment (IcedTea6 1.13.10) (rhel-1.13.10.0.el6_7-x86_64) OpenJDK 64-Bit Server V
- java自定义泛型
- java.lang.IllegalStateException: No match found 的分析解决
- 反射——Java反射机制
- rabbitmq direct、fanout、topic 三种Exchange java 代码比较
- java基础算法学习之完全数的求解
- JAVA设计模式(05):创建型-原型模式(Prototype)
- Maven2和MyEclipse插件
- JDK7文件处理