本文以用户注册后为用户发送一封邮件为例子,讲述如何在Spring中使用FreeMaker或Vilocity发送邮件。
Spring配置文件:
xml 代码
-
- <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
- <property name="host" value="smtp.163.com"/>
- <property name="username" value="test"/>
- <property name="password" value="123456"/>
- <property name="javaMailProperties">
- <props>
- <prop key="mail.smtp.auth">trueprop>
- props>
- property>
- bean>
-
-
- <bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
- <property name="templateLoaderPath" value="/WEB-INF/freemakertemplate/" />
- <property name="freemarkerSettings">
- <props>
- <prop key="template_update_delay">0prop>
- <prop key="default_encoding">GBKprop>
- <prop key="locale">zh_CNprop>
- props>
- property>
- bean>
-
-
- <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
- <property name="resourceLoaderPath" value="/WEB-INF/vilocitytemplate/" />
- <property name="velocityProperties">
- <props>
- <prop key="velocimacro.library">*.vmprop>
- <prop key="default.contentType">text/html; charset=utf-8prop>
- <prop key="output.encoding">utf-8prop>
- <prop key="input.encoding">utf-8prop>
- props>
- property>
- bean>
-
- <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage" singleton="false">
- <property name="from" value="test@163.com"/>
- bean>
-
- <bean id="mailEngine" class="test.MailEngine">
- <property name="mailSender" ref="mailSender"/>
-
- <property name="velocityEngine" ref="velocityEngine"/>
-
- <property name="freeMarkerConfigurer" ref="freeMarkerConfigurer" />
- bean>
java 代码
- MailEngine类:
-
- public class MailEngine {
- protected static final Log log = LogFactory.getLog(MailEngine.class);
-
-
- private VelocityEngine velocityEngine;
- private MailSender mailSender;
-
-
-
-
-
-
- public void setMailSender(MailSender mailSender) {
- this.mailSender = mailSender;
- }
-
- public void setVelocityEngine(VelocityEngine velocityEngine) {
- this.velocityEngine = velocityEngine;
- }
-
-
-
-
-
-
-
- public String generateEmailContent(String templateName, Map map) {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- try {
- return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateName, map);
- } catch (VelocityException e) {
- log.error("Error while processing Vilocity template ", e);
- }
-
- return null;
- }
-
-
-
-
-
-
-
-
-
-
-
- public void sendMessage(String[] emailAddresses, String fromEmail,
- String bodyText, String subject, String attachmentName,
- ClassPathResource resource) throws MessagingException {
- MimeMessage message = ((JavaMailSenderImpl) mailSender)
- .createMimeMessage();
-
-
- MimeMessageHelper helper = new MimeMessageHelper(message, true);
-
- helper.setTo(emailAddresses);
- if(fromEmail != null){
- helper.setFrom(fromEmail);
- }
- helper.setText(bodyText, true);
- helper.setSubject(subject);
-
- if(attachmentName!=null && resource!=null)
- helper.addAttachment(attachmentName, resource);
-
- ((JavaMailSenderImpl) mailSender).send(message);
- }
-
-
-
-
-
- public void send(SimpleMailMessage msg) {
- try {
- ((JavaMailSenderImpl) mailSender).send(msg);
- } catch (MailException ex) {
-
- log.error(ex.getMessage());
- }
- }
-
-
-
-
-
-
-
-
- public void send(SimpleMailMessage msg, String templateName, Map model) {
-
- String content = generateEmailContent(templateName, model);
- MimeMessage mimeMsg = null;
- try {
- mimeMsg = ((JavaMailSenderImpl) mailSender).createMimeMessage();
- MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true, "utf-8");
- helper.setTo(msg.getTo());
-
- if(msg.getSubject()!=null)
- helper.setSubject(msg.getSubject());
-
- if(msg.getFrom()!=null)
- helper.setFrom(msg.getFrom());
-
- helper.setText(content, true);
-
- ((JavaMailSenderImpl) mailSender).send(mimeMsg);
- } catch (MessagingException ex) {
- log.error(ex.getMessage(), ex);
- }
-
- }
- }
-
- 发送邮件:
- SimpleMailMessage message = (SimpleMailMessage) getBean("mailMessage");
- message.setTo(user.getName() + "<" + user.getEmail() + ">");
-
- Map model = new HashMap();
- model.put("user", user);
-
- MailEngine engine = (MailEngine)getBean("mailEngine");
-
- engine.send(message, "notifyUser.vm", model);
-
-
-
- 以上的User为用户类。
xml 代码
- 模板:
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <title>用户注册通知title>
- head>
- <body>
- <p>${user.name} 您好,恭喜您,已经成为本站会员!p>
- <table>
- <tr><td>用户名:td><td>${user.name}td>tr>
- <tr><td>密码:td><td>${user.password}td>tr>
- table>
- body>
- html>
分享到:
相关推荐
通过springboot 整合freemarker模板引擎,自动发送html格式邮件
在Java代码中,你需要准备一个数据模型,这可以是一个Java对象或者一个Map,包含所有要在模板中使用的数据。每个键值对应模板中的一个变量。 5. **生成Word文档** 使用FreeMarker的`Template`类和数据模型,我们...
在"spring mvc+freemaker 开发实例"的depot文件中,可能包含了项目的源代码、配置文件、FreeMarker模板文件等资源。开发者可以研究这些文件,了解实际项目中的实现方式,包括如何配置Spring MVC,如何创建和组织...
采用javamail实现的通用邮件发送模块,邮件内容采用Freemarker技术实现,多线程实现邮件发送,观察者模式来定制邮件的错误处理,设计思路参考作者博客 http://blog.csdn.net/crazycoder2010/article/details/6629076
在IT行业中,它也被广泛应用于处理Excel模板,特别是在需要批量导入数据并自动生成报告的场景下。本篇文章将详细阐述如何利用Freemarker与MyEclipse来处理Excel模板。 首先,我们需要了解 Freemarker 的基本概念。...
项目描述 管理员:医生管理,患者管理,药品管理,患者预约管理,病史管理,住院信息管理,管理员管理 医生:查看对应预约患者,查看病史,...spring boot+spring mvc+mybatis+shrio+jquery+layui+freemarker+bootstrap
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 ... FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库 FreeMarker是免费的
Spring MVC配置Freemarker全局变量,实现应用全路径
通过文件名"springJspFreemaker"我们可以推测,这个压缩包可能包含了使用Spring、JSP和FreeMarker开发的示例项目或教程。解压后,我们可能会找到相关的源代码、配置文件、以及说明文档,帮助学习者了解这三个技术...
在本项目"Spring-FreeMaker-Mybatis.zip_DEMO_extjs freemaker_mybatis_mybati"中,我们将探讨一个集成Spring、Mybatis以及FreeMarker技术的简单DEMO,它主要用于演示如何利用这些技术来构建一个高效的Web应用。...
springsecurity(用spring ibatis freemaker)实现的权限管理页面, 里头包括数据库脚本和原代码 主要参考http://blog.csdn.net/k10509806/article/details/6369131 这个人的文章做的
开发者可能演示了如何从服务器获取数据,然后在Freemarker模板中使用这些数据初始化ECharts图表,从而展示了数据可视化的能力。通过学习这个例子,你可以了解如何将后端数据与前端图表结合,创建出交互式的数据展示...
structs2 + spring2 + hibernate3 +freemaker + Ajax 其中包括Jquery+Ajax等最新技术 实现的完整项目实例,从中可以学得很多技术知识,只此一家别 无二家. 想学好java_Web开发的就赶紧下载吧 (己包含了数据库的文件,...
springsecurity(用spring ibatis freemaker)实现的用户自定义的权限管理页面, 里头包括数据库脚本 和原数据 和原代码 主要参考http://blog.csdn.net/k10509806/article/details/6369131 这个人的文章做的
"ext + spring Json view + springMVC + Freemaker"的组合提供了一种强大的解决方案,它整合了多种技术,以实现丰富的用户界面、灵活的数据处理和高效的视图渲染。下面我们将深入探讨这些技术及其相互作用。 1. **...
在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...
- Spring MVC中,使用`FreeMarkerViewResolver`作为视图解析器,将请求映射到对应的FreeMarker模板。 - `ModelAndView`对象传递数据到模板,`@ModelAttribute`注解用于将表单数据绑定到模型。 5. **FreeMarker的...