`

spring+velocity自动发送邮件

阅读更多
1.下载spring及velocity类库,

email配置文件:mail.properties:
mail.default.from=jfishsz@163.com
mail.host=smtp.163.com
mail.username=xxxxxx
mail.password=xxxxxx
mail.smtp.auth=true
mail.smtp.timeout=25000

spring配置文件:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <!-- For mail settings and future properties files -->
    <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}</value>
        </property>
        <property name="username">
              <value>${mail.username}</value>
        </property>
        <property name="password">
              <value>${mail.password}</value>
        </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="mailMessage"
        class="org.springframework.mail.SimpleMailMessage"
        singleton="false">
        <property name="from">
              <value>${mail.default.from}</value>
        </property>
       
    </bean>
    <bean id="sendMail" class="net.pms.email.SendMail">
        <property name="mailSender" ref="mailSender" />
        <property name="message" ref="mailMessage" />
        <property name="velocityEngine" ref="velocityEngine" />
    </bean>
    <!-- Configure Velocity for sending e-mail -->
    <bean id="velocityEngine"
        class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
        <property name="velocityProperties">
              <props>
                  <prop key="resource.loader">class</prop>
                  <prop key="class.resource.loader.class">
                      org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
                  </prop>
                  <prop key="velocimacro.library"></prop>
              </props>
        </property>
    </bean>
</beans>
velocity模板文件:accountCreated.vm:
${message}

Username: ${username}
Password: ${Password}

Login at: ${applicationURL}

2.实现类
SendMail.java
package net.pms.email;

import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.VelocityException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.ui.velocity.VelocityEngineUtils;

public class SendMail {
    protected static final Log log = LogFactory.getLog(SendMail.class);

    private MailSender mailSender;

    private SimpleMailMessage message;

    private VelocityEngine velocityEngine;

    public void setVelocityEngine(VelocityEngine velocityEngine) {
        this.velocityEngine = velocityEngine;
    }

    public void setMailSender(MailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void setMessage(SimpleMailMessage message) {
        this.message = message;
    }

    public void sendEmail(Map model) {
        message.setTo("jfishsz@163.com");
        message.setSubject("subject");
        String result = null;
        try {
              result = VelocityEngineUtils.mergeTemplateIntoString(
                      velocityEngine, "accountCreated.vm", model);
        } catch (VelocityException e) {
              e.printStackTrace();
        }
        message.setText(result);
        mailSender.send(message);
    }
}
测试类:SendMailTest.java
package net.pms.email;

import java.util.HashMap;
import java.util.Map;

import junit.framework.TestCase;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SendMailTest extends TestCase {
    String[] paths = { "config/applicationContext*.xml" };

    ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);

    SendMail s = (SendMail) ctx.getBean("sendMail");

    protected void setUp() throws Exception {
        super.setUp();
    }

    protected void tearDown() throws Exception {
        super.tearDown();
    }

    /*
    * Test method for 'net.pms.email.SendMail.sendEmail(Map)'
    */
    public void testSendEmail() {
        Map model = new HashMap();
        model.put("message", "msg");
        model.put("username", "jack");
        model.put("Password", "666666");
        model.put("applicationURL", "www.163.com");
        s.sendEmail(model);
    }

}
这只是一个简单的实现介绍,我想通过这个例子进入通往javamail的大门。
分享到:
评论

相关推荐

    spring+velocity发送邮件

    在发送邮件时,我们可以通过Velocity来动态生成邮件内容,使得邮件内容可以根据不同的参数变化,从而达到个性化的效果。 ### 发送邮件的技术栈版本 - Spring版本:2.0.6 - Velocity版本:1.5 - JavaMail API:未...

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

    这些场景都需要通过编程的方式自动发送邮件。本文将探讨如何使用Java和Spring框架来实现这一功能。 JavaMail API是Java中用于发送邮件的基础库,虽然它可以完成邮件发送,但其API接口相对复杂,编写代码时需要处理...

    spring mail

    三、使用Spring Mail发送邮件 1. 创建JavaMailSender实例:通过Spring的依赖注入获取`JavaMailSender`对象。 2. 创建Message:使用`SimpleMailMessage`或`MimeMessage`创建邮件对象,设置收件人、抄送人、主题、正文...

    JAVA邮件发送系统项目

    - **定时任务**:如果需要定期发送邮件,可以结合Quartz或Spring的定时任务功能。 - **邮件验证**:在用户注册或更改重要设置时,发送验证邮件以提高安全性。 - **邮件队列**:对于大量发送的邮件,可以考虑使用...

    在Java中发送电子邮件

    3. **Spring框架**:通过Spring的邮件服务模块,可以更加优雅地管理和发送邮件,支持依赖注入和事务管理。 总的来说,Java中发送电子邮件涉及多个库和组件的协作,包括JavaMail API、JAF、Apache Commons Email和...

    Mastering.Apache.Velocity

    - **示例三:邮件模板**:为自动发送的邮件设计模板,提高用户体验和效率。 #### 九、Velocity 与其他技术的结合 - **Spring 框架**:在 Spring 应用中,可以轻松地集成 Velocity 作为模板引擎。 - **Struts2**:...

    Spring Boot实战派(源码)

    - 使用JavaMailSender接口发送邮件,配置邮件服务器信息。 15. **云原生支持** - 支持Docker容器化部署,以及与云平台如Cloud Foundry、Kubernetes的集成。 通过分析《Spring Boot实战派》源码,读者不仅可以...

    spring4.1核心包

    包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 18. spring-webmvc-4.1.1.RELEASE.jar 包含...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

    Spring in Action(第二版 中文高清版).part2

    4.3.1 为Spring切面创建自动代理 4.3.2 自动代理@AspectJ切面 4.4 定义纯粹的POJO切面 4.5 注入AspectJ切面 4.6 小结 第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据...

    Spring 2.0 开发参考手册

    14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...

    jsp邮件群发系统jsp邮件群发系统

    开发过程中可能还会用到其他Java库,如Apache Commons Net用于SMTP通信,Velocity或Freemarker作为模板引擎,Spring框架进行依赖注入和事务管理。 【压缩包子文件的文件名称列表】中的"email"可能包含以下组件: 1...

    Spring中文帮助文档

    14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...

    Spring API

    14.4. Velocity和FreeMarker 14.4.1. 需要的资源 14.4.2. Context 配置 14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/...

    Spring in Action(第2版)中文版

    4.3.1为spring切面创建自动代理 4.3.2自动代理@aspectj切面 4.4定义纯粹的pojo切面 4.5注入aspectj切面 4.6小结 第二部分企业spring 第5章使用数据库 5.1spring的数据访问哲学 5.1.1了解spring数据访问的...

    Spring in Action(第二版 中文高清版).part1

    4.3.1 为Spring切面创建自动代理 4.3.2 自动代理@AspectJ切面 4.4 定义纯粹的POJO切面 4.5 注入AspectJ切面 4.6 小结 第二部分 企业Spring 第5章 使用数据库 5.1 Spring的数据访问哲学 5.1.1 了解Spring数据...

    spring3类库

    以上只是Spring3中涉及的第三方类库的一部分,实际项目中可能还会根据需求引入更多的库,如邮件发送、缓存管理、FTP/SFTP支持等。Spring的开放性和可扩展性使得它能够很好地与各种第三方库集成,构建出功能丰富的...

    基于Springboot的七彩云南文化旅游网站(有报告) Javaee项目,springboot项目

    Spring Boot支持使用`@Async`注解实现异步任务处理,提高系统的响应速度和并发能力,例如发送邮件通知、后台数据分析等。 **10. 日志记录** 日志是任何项目的重要组成部分。Spring Boot默认集成了Logback或Log4j,...

    管理系统系列--SpringBoot酒店管理系统.zip

    5. **任务调度**:酒店管理系统可能需要定期执行某些任务,如清理过期订单、发送提醒邮件等。Spring Boot集成Quartz或Spring Task可以方便地实现定时任务。 6. **缓存管理**:使用Spring Cache抽象,可以集成如...

Global site tag (gtag.js) - Google Analytics