Java - Java Mail邮件开发(3)spring +Java Mail + Velocity
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 { @Autowired
private 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 { @Autowired
private 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");
Java - Java Mail邮件开发(3)spring +Java Mail + Velocity的更多相关文章
- 用java自带jdk开发第一个java程序
[学习笔记] 1.用java自带jdk开发第一个java程序: 下面要讲的eclipse要想正常工作,需要先学会配置这里的jdk.jdk要想正常工作,需先学会配置JAVA_HOME和ClassPa ...
- Java - Java Mail邮件开发(2)springboot +Java Mail + Html
1.springboot + Java Mail + Html 项目结构: pom.xml <project xmlns="http://maven.apache.org/POM/4. ...
- java mail Received fatal alert: handshake_failure java 无法发送邮件问题 java 发送qq邮件(含源码)
java 无法发送邮件问题 java 发送qq邮件 报错:java mail Received fatal alert: handshake_failure (使用ssl) javax.mail.M ...
- 【JavaWeb项目】一个众筹网站的开发(九)邮件开发
Java官方支持邮件开发,Javax-mail jdk中默认没有,需要另外下载 apache的基于Javax-mail开发了commons-mail,更加简单高效,推荐使用 一.电子邮件接收和发送协议 ...
- Java-JavaMail邮件开发(1)Java Mail
1.仅使用Java Mail 使用163邮箱作为代理服务器: 引入依赖: <dependency> <groupId>com.sun.mail</groupId> ...
- Spring进阶—如何用Java代码实现邮件发送(一)
相关文章: <Spring进阶—如何用Java代码实现邮件发送(二)> 在一些项目里面如进销存系统,对一些库存不足发出预警提示消息,招聘网站注册用户验证email地址等都需要用到邮件发送技 ...
- 传智播客张孝祥java邮件开发随笔01
01_传智播客张孝祥java邮件开发_课程价值与目标介绍 02_传智播客张孝祥java邮件开发_邮件方面的基本常识 03_传智播客张孝祥java邮件开发_手工体验smtp和pop3协议 第3课时 关于 ...
- Java Mail 邮件发送Demo
上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容. Demo ...
- java深入探究10-文件上传组件FileUpload,邮件开发
1.文件上传组件FileUpload 1)java提供了文件上传的工具包 需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包) commons-oi-1.4(封装了 ...
随机推荐
- DRF介绍,DRF项目开发,DRF项目的视图类的dispatch源码解析
目录 一.DRF介绍 1. 什么是DRF 2. 为什么要用DRF (1)使用DRF的原因 (2)站在开发者的角度来说用DRF的好处(暂时列举这么多) 二.用DRF开发后端项目 三.APIView请求生 ...
- 签发的用户认证token超时刷新策略
https://segmentfault.com/a/1190000014545422
- 风控MIS那些事
信贷风险管理应基于数据进行决策,MIS则是通过对数据的加工与展示,给决策者提供参考. 管理信息系统(ManagementInformation System,MIS)是进行信息的 收集.传输.加工.储 ...
- 读取xml文件中的配置参数实例_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...
- jsonp跨域实例
一.什么是跨域 二.如何解决跨域 1.前端常用 JSONP 2.服务器端配置 HTTP 协议的 header 解析 三.JSONP实现的实例 <!DOCTYPE html> <htm ...
- 开发一个chrome插件:将百度搜索热点屏蔽掉!
每次百度搜索,搜索结果的右边总是出现些乱七八糟的搜索热点(推的都是些什么玩意,高校替课和我有毛关系,几个悲伤的热点我用星号顶掉了). 强迫症想把它隐藏掉,我用的是chrome浏览器,受adblock( ...
- 使用 nodejs 和 axios 以及 cherrio 爬取天气预报
安装依赖 引入依赖 发送请求 解析请求的返回值 以下代码可以复制直接运行,获得 7 天的天气预报 const axios = require('axios') const cheerio = requ ...
- 限制 button 在 3 秒内不可重复点击
在下载或者上传文件过程中避免重复点击带来的多次同样的请求造成资源浪费,限制 button 的点击次数是很有必要的. 1. 增强用户体验,2. 减轻服务器压力. HTML 代码 <button i ...
- SQL Server 2012 sa 用户登录 18456 错误 (转)
转自:http://blog.csdn.net/waterxcfg304/article/details/40617475 最近想研究下SQL SERVER2012 Enterprise版本的数据库, ...
- (61)C语言预处理命令详解
一 前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置. 预处理是C语言的一个重要功能 ...