1、spring + Java Mail + Velocity

项目结构:

注意:用户包中引入各包的顺序问题。如velocity-2.1。

beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- spring配置文件的根元素,使用spring-beans-4.0.xsd语义约束 -->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"><bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"></bean><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations" value="mail.properties"/></bean><bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="host" value="${mail.host}"/><property name="username" value="${mail.user}"/><property name="password" value="${mail.pwd}"/></bean><bean id="javaMailSenderService" class="com.lfy.sendmail.JavaMailSenderService"/><bean id="javaMailSenderImplService" class="com.lfy.sendmail.JavaMailSenderImplService"/><!-- VelocityEngineFactory --><bean id="velocityEngineFactory" 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></props></property></bean><bean id="velocityEngineService" class="com.lfy.velocity.VelocityEngineService"/></beans>

VelocityEngineService.java

package com.lfy.velocity;import org.apache.velocity.app.VelocityEngine;
import org.springframework.beans.factory.annotation.Autowired;public class VelocityEngineService {@Autowiredprivate VelocityEngine velocityEngine;public VelocityEngine getVelocityEngine() {return velocityEngine;}public void setVelocityEngine(VelocityEngine velocityEngine) {this.velocityEngine = velocityEngine;}
}

JavaMailSenderImplService.java

package com.lfy.sendmail;import javax.mail.internet.MimeMessage;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;/*** 2、spring支持的第二种发送器JavaMailSenderImpl* @author lfy**/
public class JavaMailSenderImplService {@Autowiredprivate JavaMailSenderImpl javaMailSenderImpl;public JavaMailSenderImpl getJavaMailSenderImpl() {return javaMailSenderImpl;}public void setJavaMailSenderImpl(JavaMailSenderImpl javaMailSenderImpl) {this.javaMailSenderImpl = javaMailSenderImpl;}/*** simple content* @param message*/public void send(SimpleMailMessage message){javaMailSenderImpl.send(message);System.out.println("JavaMailSenderImpl:send silpleMessage successfully.");}/*** Velocity content* @param message*/public void sendWithVelocity(MimeMessage message) {javaMailSenderImpl.send(message);System.out.println("JavaMailSenderImpl:send mimeMessage successfully.");}
}

index.vm

<html>
<head>
<style type="text/css">
h4{color:red;background:#efefef;
}
</style>
</head>
<body>
<h4>${user} </h4>
<p><p>
<i>${content}</i>
</body>
</html>

springJavaMailSender.java

package com.lfy.main;import java.util.HashMap;
import java.util.Map;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;import org.apache.velocity.app.VelocityEngine;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.velocity.VelocityEngineUtils;import com.lfy.sendmail.JavaMailSenderImplService;
import com.lfy.velocity.VelocityEngineService;public class springJavaMailSender {public static void main(String[] agrs) throws MessagingException {//创建spring容器ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");JavaMailSenderImplService javaMailSenderImplService = (JavaMailSenderImplService)ctx.getBean("javaMailSenderImplService");VelocityEngine velocityEngine=(VelocityEngine)((VelocityEngineService)ctx.getBean("velocityEngineService")).getVelocityEngine();Map<String,Object> model=new HashMap<String,Object>();model.put("user", "Tomcat");model.put("content", "Hello");String emailText=VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "index.vm", "UTF-8", model);MimeMessage msg=javaMailSenderImplService.getJavaMailSenderImpl().createMimeMessage();MimeMessageHelper helper=new MimeMessageHelper(msg,true);helper.setFrom("xxxxxxxxxx@163.com");helper.setTo("xxxxxxxx@qq.com");helper.setCc("xxxxxxxx@163.com");helper.setSubject("Velocity模板测试");helper.setText(emailText, true);javaMailSenderImplService.sendWithVelocity(msg);}
}

运行效果:

2、使用Maven配置使用Velocity。整理中...

3、Velocity加载模板的3中方式

1》从文件加载模板文件(默认方式)

properties.setProperty("resource.loader", "file");
//设置velocity资源加载方式为file时的处理类
properties.setProperty("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.FileResourceLoader");

2》从类路径加载模板文件

properties.setProperty("resource.loader", "class");
//设置velocity资源加载方式为file时的处理类
properties.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");

 3》从jar文件中加载模板文件

properties.setProperty("resource.loader", "jar");
//设置velocity资源加载方式为file时的处理类
properties.setProperty("jar.resource.loader.class", "org.apache.velocity.runtime.resource.loader.JarResourceLoader");
//设置jar包所在的位置
properties.setProperty("jar.resource.loader.path", "jar:file:/F:/quicksure_Server_Provider.jar");

转载于:https://www.cnblogs.com/ZeroMZ/p/11478956.html

Java - Java Mail邮件开发(3)spring +Java Mail + Velocity相关推荐

  1. java反射和注解开发(备java基础,javaee框架原理)-任亮-专题视频课程

    java反射和注解开发(备java基础,javaee框架原理)-5358人已学习 课程介绍         Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明. ...

  2. Spring Boot——开发新一代Spring Java应用

    2019独角兽企业重金招聘Python工程师标准>>> Spring官方网站本身使用Spring框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Be ...

  3. 张孝祥java邮件开发_张孝祥java邮件开发详解笔记(生成文本邮件)

    package zxx.createMessage; import java.io.FileOutputStream; import java.util.Date; import java.util. ...

  4. Java 8 失宠!开发人员向 Java 11 转移...

    以下文章来源方志朋的博客,回复"666"获面试宝典 作者:白开水 来源:OSC开源社区(ID:oschina2013) 此前的 Java 社区报告曾指出,Java 8 仍是开发人员 ...

  5. java 未读邮件_如何在java中阅读来自雅虎的未读电子邮件

    我想阅读从雅虎mail.so未读邮件,我使用下面的代码,但它给了我错误 如下 javax.mail.MessagingException: Connect failed; nested excepti ...

  6. java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园

    最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...

  7. 微信信息回复 java,微信公众平台开发中使用Java如何实现一个消息回复功能

    微信公众平台开发中使用Java如何实现一个消息回复功能 发布时间:2020-11-17 16:11:11 来源:亿速云 阅读:82 作者:Leah 本篇文章给大家分享的是有关微信公众平台开发中使用Ja ...

  8. java游戏服务器的开发和维护,java游戏服务器开发

    java游戏服务器开发 内容精选 换一换 开发者基于Atlas 200 DK进行AI应用开发前,需要在制作SD卡时准备的Ubuntu服务器中部署开发环境,有以下两种场景:部署MindStudio,基于 ...

  9. android开发是java语言吗_android开发是用java语言吗?

    android开发的主流语言是java语言,但也可以使用其他语言,例可以通过Android NDK使用C/C++作为编程语言来开发应用程序,也可使用SL4A来使用其他各种脚本语言进行编程. Andro ...

  10. 实训9.2. JDK——java语言的软件开发工具包(JAVA的运行环境(JVM+Java系统类库)和JAVA工具) 【java开发的核心】...

    一.概念 JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工 ...

最新文章

  1. iOS 2D绘图详解(Quartz 2D)之概述
  2. 过拟合与模型调优(part3)--数据划分及模型选择
  3. 充分地享受母爱的飞鸽传书
  4. mysql age字段类型_mysql 列类型
  5. Windows Server 2008部署***服务器
  6. 【面经】记一次字节跳动后端面试经历
  7. tomcat的安装以及配置
  8. S3TC IAP15F2K61S2点亮一个发光二极管keil和stc-isp软件操作
  9. 杨奇龙 mysql 分区_MySQL Group Replication 入坑指北 | By杨奇龙
  10. 【生信进阶练习1000days】day11day12-GEO data mining
  11. SQL数据库置疑数据怎么恢复
  12. 【C++ 程序】 复数类 (Complex)
  13. LLVM学习笔记----clang、llvm-as、llvm-dis、llc、 llvm-link、lli
  14. 记一次对钓鱼邮件的分析
  15. h5页面调用百度地图获取当前位置并在地图上标注出来
  16. Android WebView支持文件下载之调起浏览器下载(Java与Kotlin版)
  17. 三个字母的单词颠倒也是单词_世界上最强大的两个字母的单词
  18. 最短路 dij floy spfa
  19. python学习——如何求最大公约数
  20. linux自动安装trojan客户端的shell脚本

热门文章

  1. 2021-1123梦笔记
  2. 未解决:fatal error: wasm.h: 没有那个文件或目录 #include <wasm.h>
  3. INTEL芯片组驱动下载地址
  4. 藏经阁的藏,不念cang而是zang
  5. 行业点评:大疆反腐事件,员工的反驳
  6. mysql和memcache 查询_使用Memcache缓存MySQL查询(转载)
  7. ap计算机科学ab,AP微积分AB_AP科目介绍|AP考试网
  8. g6的minimap中的配置_使用GGEditor开发流程编辑应用
  9. php 图片上传打印路径,php上传图片到指定位置路径保存到数据库的具体实现
  10. laravel-echo-server 不接收失败_6所高校公布报名不合格名单!这些问题最容易出错...