send email with velocity and spring 完整示例
1.封装邮件信息类:
package com.chenlb.mail;
import java.util.Map;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.app.VelocityEngine;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.velocity.VelocityEngineUtils;
/**
* 邮件发送器
*/
public class VelocityTemplateMailMessage {
protected final Log logger = LogFactory.getLog(getClass());
private JavaMailSender javaMailSender;
private VelocityEngine velocityEngine;
private String from;
private String title;
private String encoding;
private String templateLocation;
private String[] toEmails;
private Map model;
public boolean send() {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg);
try {
helper.setFrom(from);
helper.setSubject(title);
helper.setTo(toEmails);
helper.setText(getMessage(), true); //如果发的不是html内容去掉true参数
javaMailSender.send(msg);
} catch (MessagingException e) {
// TODO 自动生成 catch 块
if(logger.isWarnEnabled()) {
logger.warn("邮件信息导常! 邮件标题为: "+title);
}
return false;
//e.printStackTrace();
} catch (MailException me) {
// TODO: handle exception
if(logger.isWarnEnabled()) {
logger.warn("发送邮件失败! 邮件标题为: "+title);
}
return false;
}
return true;
}
/**
* 邮件模板中得到信息
* @return 返回特发送的内容
*/
private String getMessage() {
return VelocityEngineUtils.mergeTemplateIntoString(velocityEngine,
templateLocation, encoding, model);
}
private String[] createToEmail(String to) {
return new String[] {to};
}
public void setToEmail(String to) {
setToEmails(createToEmail(to));
}
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public void setVelocityEngine(VelocityEngine velocityEngine) {
this.velocityEngine = velocityEngine;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void setModel(Map model) {
this.model = model;
}
public void setTemplateLocation(String templateLocation) {
this.templateLocation = templateLocation;
}
public void setTitle(String title) {
this.title = title;
}
public void setToEmails(String[] toEmails) {
this.toEmails = toEmails;
}
public void setFrom(String from) {
this.from = from;
}
public String getTemplateLocation() {
return templateLocation;
}
}
2.spring配置文件,applictionContext-mail.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"dtd/spring-beans-2.0.dtd">
<!-- http://www.springframework.org/ -->
<beans>
<!-- 属性文件加载 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:mail.properties</value>
</list>
</property>
</bean>
<!-- 邮件发送器 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
</props>
</property>
</bean>
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="resourceLoaderPath" value="classpath:velocity"></property>
</bean>
<bean id="templateMail" class="com.chenlb.mail.VelocityTemplateMailMessage">
<property name="javaMailSender" ref="mailSender"></property>
<property name="from" value="${mail.from}"></property>
<property name="encoding" value="UTF-8"></property>
<property name="templateLocation" value="test.vm"></property>
<property name="velocityEngine" ref="velocityEngine"></property>
<property name="title" value="wwww.blogjava.net/chenlb"></property>
</bean>
</beans>
说明:模板文件放到classpath的velocity目录下,可自行改。
3.发送者邮件信息,mail.properties(classpath位置):
mail.from=yourname@126.com
mail.host=smtp.126.com
mail.password=yourpassword
mail.smtp.auth=true
mail.smtp.timeout=25000
mail.username=yourname
4.模板文件,text.vm(classpath的velocity目录下):
你好!${me} 这是模板生成的邮件。
5.使用:
VelocityTemplateMailMessage vtmm = (VelocityTemplateMailMessage) context.getBean("templateMail");
Map<String, String> data = new HashMap<String, String>();
data("me","yourname");
vtmm.setModel(data);
vtmm.setToMail("yourOtherMail@163.com");
vtmm.setTitle("mail with veloctiy and spring");
vtmm.send();
分享到:
相关推荐
本教程将围绕如何使用Spring框架与Velocity模板引擎来实现邮件发送功能进行详细讲解。 首先,让我们理解Spring框架的邮件发送服务。Spring提供了`JavaMailSender`接口,该接口提供了发送邮件的基本方法,如`send...
根据提供的信息,我们可以详细探讨如何使用Spring框架结合Velocity模板引擎来实现邮件的自动化发送功能。这一过程涉及到Spring框架的基本配置、Velocity模板引擎的使用以及JavaMail API的应用。 ### Spring框架与...
分享一个spring+mybatis+velocity项目demo,该项目是之前给一个学第学习用的,主要基于springMVC、mybatis、velocity搭建的,使用maven构建,其中zai service层编写了两个简单组件,一个是email发送,一个是认证授权...
我们将涉及Spring的Java配置和Velocity模板引擎来创建动态邮件内容。 首先,我们需要引入必要的依赖。在Spring项目中,我们通常会添加`spring-context`和`spring-context-support`库,它们包含了处理邮件发送功能的...
在这个项目"springJavaEmail:Spring集成Velocity发送Email"中,我们将探讨如何利用Spring和Velocity模板引擎来创建和发送带有动态内容的电子邮件。 首先,让我们理解Spring的JavaMailSender接口。这个接口是Spring...
网上诸如Spring Send Email 或者 Spring quartz Send Email 多不胜数,大多都只是简单介绍一下如何去实现,却没有考虑到作为一个Demo,最重要的是功能,本文通过完善的Demo介绍了一个Spring+Velocity 定时发送邮件的例子
velocity+springmvc+spring+mybaitsg整合案例 用户管理 带sql ,亲自整合调试,没有问题! /* SQLyog Ultimate v8.32 MySQL - 5.6.19 : Database - test ******************************************************...
spring-email-master spring sends email by three methods 介绍 此项目基于Java配置的方式搭建,此种配置方式比XML配置方式更加强大,类型安全并且易于重构 建议在开发中优先使用基于Java去配置,如本实例中的 ...
5. **使用Velocity模板**:创建Velocity模板文件(如`templates/email.vm`),然后在服务类中使用VelocityContext填充数据,并通过VelocityEngine渲染模板。 ```java // EmailService.java public void sendEmail...
** Velocity 概述** Velocity 是一个开源的 Java 模板引擎,它允许开发者将静态文本与动态内容分离,使得Web...在实际项目中,Velocity 还可以与其他框架如 Struts、Spring MVC 等集成,提供更强大的模板渲染能力。
2. 在Spring配置文件(如`email-163.xml`)中配置邮件服务器的相关信息,如用户名、密码、SMTP服务器地址等。 3. 在代码中,使用Spring的`MailSender`接口实例来创建并发送`SimpleMailMessage`对象。 对于更复杂的...
Velocity在Web开发中的应用广泛,尤其在MVC框架中,如Spring MVC,用于生成动态网页内容。这篇博文主要探讨了如何在Web开发中使用Velocity处理Object、List和Map对象。 首先,让我们深入了解Velocity的基本概念。...
Spring Mail支持创建复杂的HTML邮件,可以利用Velocity或FreeMarker模板引擎来生成动态内容。 6. **邮件附件** 发送带有附件的邮件也是常见的需求。Spring Mail提供了`MimeMessageHelper`类,允许我们方便地添加...
这篇博客将深入探讨如何在Spring中利用FreeMarker和Velocity来发送邮件。 首先,我们需要理解Spring的`JavaMailSender`接口,它是发送邮件的核心组件。通过实现这个接口,我们可以配置SMTP服务器的相关参数,如主机...
- 如果您希望了解如何在 Spring 框架下集成 Velocity 进行邮件模板的开发,那么这份指南非常适合您。 #### 二、Velocity 是什么? - **Fruit Store 示例** - Velocity 的设计理念可以通过一个虚构的 Fruit Store ...
在实际应用中,Velocity通常与Spring MVC、Struts等Web框架结合使用,为Web应用程序提供视图层的解决方案。Velocity模版文件(通常以`.vm`为扩展名)会被解释并合并到HTML或其他输出格式中,生成最终的动态网页内容...
3. **Thymeleaf 或者 Velocity**:Spring Boot 可以与多种模板引擎集成,这里可能使用了 Thymeleaf 或 Velocity 来渲染登录页面。这些模板引擎允许我们在 HTML 中嵌入表达式,动态生成内容。 4. **Spring Security*...
spring-boot-starter-mail提供了Email发送功能,而spring-boot-starter-velocity提供了模板引擎velocity的支持。 三、 配置Email发送功能实例 要配置Email发送功能实例,需要在application.properties文件中添加...
Spring为开发者提供了便捷的方式来发送电子邮件,包括简单的文本邮件、带有附件的邮件以及使用模板引擎如Velocity或Freemarker来定制邮件内容。 首先,确保你的项目包含了Spring的相关库以及Java Mail API的JAR包。...