`

Spring Velocity Email

阅读更多

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框架与Velocity模板引擎来实现邮件发送功能进行详细讲解。 首先,让我们理解Spring框架的邮件发送服务。Spring提供了`JavaMailSender`接口,该接口提供了发送邮件的基本方法,如`send...

    spring+velocity发送邮件

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

    spring+mybatis+velocity项目demo

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

    Spring Email 发送

    我们将涉及Spring的Java配置和Velocity模板引擎来创建动态邮件内容。 首先,我们需要引入必要的依赖。在Spring项目中,我们通常会添加`spring-context`和`spring-context-support`库,它们包含了处理邮件发送功能的...

    springJavaEmail:Spring集成Velocity 发送Email

    在这个项目"springJavaEmail:Spring集成Velocity发送Email"中,我们将探讨如何利用Spring和Velocity模板引擎来创建和发送带有动态内容的电子邮件。 首先,让我们理解Spring的JavaMailSender接口。这个接口是Spring...

    Spring+Struts2+Velocity+Quartz+Emaill定时发邮件

    网上诸如Spring Send Email 或者 Spring quartz Send Email 多不胜数,大多都只是简单介绍一下如何去实现,却没有考虑到作为一个Demo,最重要的是功能,本文通过完善的Demo介绍了一个Spring+Velocity 定时发送邮件的例子

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

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

    spring-email-master:使用spring4.3.4 发送邮件,三种方式:文本格式,HTML格式,velocity模版,Thymeleaf模版,使用模版以及策略设计模式实现同步和异步发送

    spring-email-master spring sends email by three methods 介绍 此项目基于Java配置的方式搭建,此种配置方式比XML配置方式更加强大,类型安全并且易于重构 建议在开发中优先使用基于Java去配置,如本实例中的 ...

    SpringBoot集成Mybatis,velocity模板

    5. **使用Velocity模板**:创建Velocity模板文件(如`templates/email.vm`),然后在服务类中使用VelocityContext填充数据,并通过VelocityEngine渲染模板。 ```java // EmailService.java public void sendEmail...

    Velocity 应用示例

    ** Velocity 概述** Velocity 是一个开源的 Java 模板引擎,它允许开发者将静态文本与动态内容分离,使得Web...在实际项目中,Velocity 还可以与其他框架如 Struts、Spring MVC 等集成,提供更强大的模板渲染能力。

    Spring进阶—如何用Java代码实现邮件发送

    2. 在Spring配置文件(如`email-163.xml`)中配置邮件服务器的相关信息,如用户名、密码、SMTP服务器地址等。 3. 在代码中,使用Spring的`MailSender`接口实例来创建并发送`SimpleMailMessage`对象。 对于更复杂的...

    Velocity之WEB(Object,List,Map)

    Velocity在Web开发中的应用广泛,尤其在MVC框架中,如Spring MVC,用于生成动态网页内容。这篇博文主要探讨了如何在Web开发中使用Velocity处理Object、List和Map对象。 首先,让我们深入了解Velocity的基本概念。...

    spring boot+mail邮件服务学习demo项目源码

    Spring Mail支持创建复杂的HTML邮件,可以利用Velocity或FreeMarker模板引擎来生成动态内容。 6. **邮件附件** 发送带有附件的邮件也是常见的需求。Spring Mail提供了`MimeMessageHelper`类,允许我们方便地添加...

    Spring中使用FreeMaker或Vilocity模板发送邮件

    这篇博客将深入探讨如何在Spring中利用FreeMarker和Velocity来发送邮件。 首先,我们需要理解Spring的`JavaMailSender`接口,它是发送邮件的核心组件。通过实现这个接口,我们可以配置SMTP服务器的相关参数,如主机...

    邮件模版 velocity

    - 如果您希望了解如何在 Spring 框架下集成 Velocity 进行邮件模板的开发,那么这份指南非常适合您。 #### 二、Velocity 是什么? - **Fruit Store 示例** - Velocity 的设计理念可以通过一个虚构的 Fruit Store ...

    velocity模版技术

    在实际应用中,Velocity通常与Spring MVC、Struts等Web框架结合使用,为Web应用程序提供视图层的解决方案。Velocity模版文件(通常以`.vm`为扩展名)会被解释并合并到HTML或其他输出格式中,生成最终的动态网页内容...

    springboot实例

    3. **Thymeleaf 或者 Velocity**:Spring Boot 可以与多种模板引擎集成,这里可能使用了 Thymeleaf 或 Velocity 来渲染登录页面。这些模板引擎允许我们在 HTML 中嵌入表达式,动态生成内容。 4. **Spring Security*...

    SpringBoot配置Email发送功能实例

    spring-boot-starter-mail提供了Email发送功能,而spring-boot-starter-velocity提供了模板引擎velocity的支持。 三、 配置Email发送功能实例 要配置Email发送功能实例,需要在application.properties文件中添加...

    使用Spring的JAVA Mail支持简化邮件发送功能

    Spring为开发者提供了便捷的方式来发送电子邮件,包括简单的文本邮件、带有附件的邮件以及使用模板引擎如Velocity或Freemarker来定制邮件内容。 首先,确保你的项目包含了Spring的相关库以及Java Mail API的JAR包。...

Global site tag (gtag.js) - Google Analytics