`

send email with velocity and spring 完整示例

阅读更多

    由于项目里要发邮件,用了spring 和 velocity 模板。写下来以后可以看,好记性不如博客。
版本说明下:
spring 2.0.6
velocity 1.5
javamail 用 spring/lib下的

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;

/**
 * 邮件发送器
 * @作者 chenlb
 * @创建时间 2007-7-28 下午03:35:31 
 
*/
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();

 

看下是否收到邮件了。^_^

分享到:
评论

相关推荐

    SpringBoot1.5以上版本兼容velocity,不降级spring

    2.导入本项目中的org.springframework目录下的velocity支持类,原样copy过去或自己打个jar 3.不想写java类配置就直接@ImportResource({"classpath:velocity.xml"})原来的xml配置 4.其他原来是啥就是啥开工

    Velocity+Spring 2[1].0+Hibernate的Web应用开发框架

    ### Velocity+Spring 2.0+Hibernate 的 Web 应用开发框架 #### 一、引言 随着互联网技术的发展,Web 应用系统的复杂度不断提高,为了更好地组织和管理应用程序,MVC(Model-View-Controller)架构逐渐成为主流。在...

    简单学习使用Spring+Velocity发送邮件

    下面是一个基本的Spring配置示例: ```xml &lt;bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"&gt; &lt;property name="resourceLoaderPath" value="/WEB-INF/...

    Spring+SpringMVC+Mybatis+Velocity+Maven demo

    Spring、SpringMVC、Mybatis、Velocity和Maven是Java Web开发中常用的一组技术栈,它们各自在软件开发的不同层面发挥着重要作用。这个压缩包文件的标题和描述表明,它提供了一个集成这些技术的演示项目,下面我们将...

    spring+mybatis+velocity项目demo

    分享一个spring+mybatis+velocity项目demo,该项目是之前给一个学第学习用的,主要基于springMVC、mybatis、velocity搭建的,使用maven构建,其中zai service层编写了两个简单组件,一个是email发送,一个是认证授权...

    Velocity入门教程(Spring集成Velocity)

    Velocity入门教程,语法,Velocity布局,Spring框架集成Velocity

    spring+velocity发送邮件

    根据提供的信息,我们可以详细探讨如何使用Spring框架结合Velocity模板引擎来实现邮件的自动化发送功能。这一过程涉及到Spring框架的基本配置、Velocity模板引擎的使用以及JavaMail API的应用。 ### Spring框架与...

    velocity spring jpa hibernate 整合

    在这个项目中,"velocity spring jpa hibernate 整合"涉及到的是四个关键组件:Velocity、Spring、JPA(Java Persistence API)和Hibernate。让我们逐一深入理解这些技术并探讨它们如何协同工作。 1. **Velocity**...

    spring mvc与velocity整合

    总的来说,Spring MVC与Velocity的整合使得开发者可以利用Spring MVC的强大功能来处理业务逻辑,同时利用Velocity的简洁模板语法来设计前端页面,两者结合提供了高效且易于维护的Web应用解决方案。

    Spring Velocity简单的一个例子(转)

    Spring Velocity是一个将Velocity模板引擎与Spring框架集成的示例,这个例子主要展示了如何在Spring应用中使用Velocity来渲染动态内容。Velocity是一个Java模板引擎,它允许开发者将逻辑和表示分离,使得网页设计...

    spring mvc mybatis velocity 示范

    Spring MVC、MyBatis 和 Velocity 是三个在Java Web开发中广泛应用的开源框架。Spring MVC 是Spring框架的一部分,用于构建高效、灵活的Web应用程序。MyBatis 是一个优秀的持久层框架,它支持定制化SQL、存储过程...

    spring+velocity+ibatis

    标题 "spring+velocity+ibatis" 暗示了这个项目是基于Spring框架,结合Velocity模板引擎和iBATIS持久层框架构建的一个Web应用程序。这三个技术的整合为开发者提供了高效、灵活的后端架构。 Spring框架是Java企业级...

    velocity+springmvc+spring+mybaits 整合项目 用户管理

    velocity+springmvc+spring+mybaitsg整合案例 用户管理 带sql ,亲自整合调试,没有问题! /* SQLyog Ultimate v8.32 MySQL - 5.6.19 : Database - test ******************************************************...

    SpringBoot与velocity的结合的示例代码

    SpringBoot与Velocity的结合示例代码 本文主要介绍了如何使用Spring Boot与Velocity进行模板引擎的结合,详细地讲解了Velocity的概念、Spring Boot与Velocity的结合配置、Velocity模板的使用等。 一、Velocity简介...

    struts+spring+velocity

    Struts、Spring 和 Velocity 是Java开发中常用的三个框架,它们在构建企业级Web应用程序时起着关键作用。这里我们将深入探讨这些技术的核心概念、如何协同工作以及它们在实际项目中的应用。 **Struts** Struts 是一...

    velocity例子

    4. **Spring的Bean注入**: 在Velocity模板中,我们可以直接引用由Spring管理的Bean,只需在模板中使用Bean的名字,Velocity会自动通过Spring查找并注入。 5. **MVC模式**: Spring MVC是Spring框架的一部分,它提供...

    Spring已集成jsp的环境下同时集成Velocity

    在Java Web开发中,Spring框架和Velocity模板引擎都是常见的工具。Spring主要用于依赖注入、AOP(面向切面编程)以及企业级应用的构建,而Velocity则是一个轻量级的模板引擎,专注于视图层的渲染,提供简洁的语法来...

    Velocity+Spring+Ibatis框架搭建说明文档1

    2. **新建工程**:使用 Myeclipse 创建一个新的 Web 工程,命名为 `SVI`,然后导入所需 jar 包,这些包应包括 Velocity、Spring 和 Ibatis 的相关依赖。 3. **配置 ibatis**:配置 `ibatis` 主要涉及到 `mybatis-...

Global site tag (gtag.js) - Google Analytics