- 浏览: 49212 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
你有罪:
报这个错是什么回事?求指教。Exception in thre ...
WebService异常(一)__javax.xml.ws.Endpoint.publish() -
lishuang_0638:
不行不行。
WebService异常(一)__javax.xml.ws.Endpoint.publish()
- 配置清单
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host">
<value>smtp.gmail.com</value>
</property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
<prop key="mail.smtp.port">465</prop>
<prop key="mail.smtp.socketFactory.port">465</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
<property name="username">
<value>××××××××</value>
</property>
<property name="password">
<value>××××××</value>
</property>
<!-- 上是GMAIL特殊端口465或587,下是配置为25端口(默认)
<property name="host">
<value>smtp.163.com</value>
</property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property>
<property name="username">
<value>××××××××××</value>
</property>
<property name="password">
<value>×××××××</value>
</property> -->
</bean>
2. 注入
@Autowired
private org.springframework.mail.javamail.JavaMailSenderImpl mailSender;
3.发送代码
try {
MimeMessage mailMessage = mailSender.createMimeMessage();
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
// 设置收件人,寄件人
messageHelper.setTo(email);
messageHelper.setFrom(mailSender.getUsername()); messageHelper.setSubject(PropertiesUtil.getProperties("html_mail_subject"));
// true 表示启动HTML格式的邮件 messageHelper.setText(FreeMarkerUtils.getHtml(targetDir, targetName), true);
// 发送邮件
mailSender.send(mailMessage); return true;
} catch (MessagingException e) {
// TODO Auto-generated catch block e.printStackTrace();
msg.append("*提示:邮件未能正常发送,请重新申请!");
return false;
}
以上只是记录,其中使用Freemarker做HTML邮件模板处理
附录:
properties文件:
#html for email to user find back password
html_file_patch=${tempDir}/html/
http_miv = http://localhost:8080/miv-main/login/retrievePasswordJsp/
html_mail_subject = 找回MIV密码
附:
package com.miv.core.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
public class FreeMarkerUtils {
public static void generateHtml(String sourceDir, String sourceName, String targetDir, String targetName, List data)
throws Exception {
// 模板路径
Configuration cfg = new Configuration();
// 设置Configuration编码
cfg.setEncoding(Locale.getDefault(), "UTF-8");
// 加载free marker模板文件
cfg.setDirectoryForTemplateLoading(new File(sourceDir));
// 设置对象包装器
cfg.setObjectWrapper(new DefaultObjectWrapper());
// 设计异常处理器
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
// 定义并设置数据
Map<String, List> map = new HashMap<String, List>();
map.put("persons", data);
// 获取指定模板文件
Template template = cfg.getTemplate(sourceName);
// 设置模板的编码
template.setEncoding("UTF-8");
// 定义输入文件,默认生成在工程根目录 ,并且设置输出流的编码;
Writer out = new OutputStreamWriter(new FileOutputStream(targetDir + targetName), "UTF-8");
// 最后开始生成
template.process(map, out);
}
public static void generateHtml(String sourceDir, String sourceName, String targetDir, String targetName,
String data) throws Exception {
// 模板路径
Configuration cfg = new Configuration();
// 设置Configuration编码
cfg.setEncoding(Locale.getDefault(), "UTF-8");
// 加载free marker模板文件
cfg.setDirectoryForTemplateLoading(new File(sourceDir));
// 设置对象包装器
cfg.setObjectWrapper(new DefaultObjectWrapper());
// 设计异常处理器
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
// 定义并设置数据
Map<String, String> map = new HashMap<String, String>();
map.put("prop", data);
// 获取指定模板文件
Template template = cfg.getTemplate(sourceName);
// 设置模板的编码
template.setEncoding("UTF-8");
// 创建路径
mkdir(targetDir);
// 定义输入文件,默认生成在工程根目录 ,并且设置输出流的编码;
Writer out = new OutputStreamWriter(new FileOutputStream(targetDir + targetName), "UTF-8");
// 最后开始生成
template.process(map, out);
}
public static String getHtml(String targetDir, String targetName) {
BufferedReader bufferreader = null;
StringBuffer sb = new StringBuffer();
FileInputStream inputStream = null;
InputStreamReader inputStreamReader = null;
try {
inputStream = new FileInputStream(targetDir + targetName);
inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
bufferreader = new BufferedReader(inputStreamReader);
String line = bufferreader.readLine();
while (line != null) {
sb.append(line);
line = bufferreader.readLine();
}
bufferreader.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb.toString();
}
// 创建文件路径
public static void mkdir(String targetDir) {
File fd = null;
try {
fd = new File( targetDir);
if (!fd.exists()) {
fd.mkdirs();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
fd = null;
}
}
public static String getSourceDir() {
return FreeMarkerUtils.class.getResource("/").getPath().split("WEB-INF")[0] + "WEB-INF/freemarker";
}
}
发表评论
-
Spring Annotation Essays
2013-06-26 11:35 990注解关键字 @InitBinder用于表单 ... -
子 pom.xml
2012-09-18 10:30 0<project xmlns="http ... -
parent pom.xml
2012-09-18 10:29 0<?xml version="1.0&q ... -
application.properties
2012-09-18 10:28 0export_file_patch=${tempDir} ... -
quartz-spring.xml定时任务配置
2012-09-18 10:26 0<?xml version="1.0&q ... -
注解主要配置,以及spring邮箱配置
2012-09-18 10:24 0<?xml version="1.0&q ... -
shiro配置
2012-09-18 10:22 0<?xml version="1.0&q ... -
数据库,JPA配置
2012-09-18 10:21 0<?xml version="1.0&q ... -
web.xml配置
2012-09-18 10:19 0<?xml version="1.0&q ... -
配置spring
2012-09-18 10:17 0主配置miv-servlet.xml <?xml ... -
spring 环境配置应用
2012-06-25 11:37 843<!-- app-co ...
相关推荐
本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
Spring 配XML的十二种技巧
动力节点老杜Spring6配套笔记主要讲解了Spring框架的一些核心概念和最佳实践,特别是针对代码设计中的开闭原则(Open-Closed Principle, OCP)进行了深入探讨。在给出的代码示例中,我们可以看到一个简单的用户登录...
《夏昕(xiaxin at gmail.com)Spring开发指南》是一个针对Spring框架的详细教程资源,主要包含Spring的核心概念、配置、编程模型以及实战应用等内容。Spring是Java领域中广泛使用的轻量级开源框架,它极大地简化了...
Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...
在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...
Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...
spring揭秘,了解spring内在运行逻辑
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...
spring配置 spring配置 spring配置 spring配置 spring配置
在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...
利用业余时间对此进行翻译,并在原文的基础上,插入配图,图文并茂方便用户理解。如有勘误欢迎指正,点此提问。如有兴趣,也可以参与到本翻译工作中来 :) 从目录开始阅读吧 Contact: Blog:www.waylau.com Gmail: ...
包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
Spring框架是Java开发中不可或缺的一部分,它以其模块化、松耦合和强大的功能特性而闻名。这个"spring类库"包含的资源可以帮助开发者快速搭建基于Spring的项目环境。以下是对Spring框架及其核心组件的详细解释。 ...
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
spring4.3.1全套jar下载。 4.3.1/spring-aop-4.3.1.RELEASE.jar 4.3.1/spring-aspects-4.3.1.RELEASE.jar 4.3.1/spring-beans-4.3.1.RELEASE.jar 4.3.1/spring-context-4.3.1.RELEASE.jar 4.3.1/spring-core-4.3.1....
Spring 框架是 Java 开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。Spring 4.3.14 是该框架的最后一个4.x系列正式版,发布于2018年2月24日。这个版本在Spring 5.0发布之前提供了一个...
Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...
在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务来简化企业级应用的构建。RabbitMQ则是一个流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地...