spring mvc 发送html格式velocity邮件模板(包括定时发送与按钮触发发送)
2015-05-12 17:13
537 查看
1.Maven Dependency(POM.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<!-- <name>SendEmail</name>
<groupId>MavenDemo</groupId>
<artifactId>SendEmail</artifactId>
<version>0.0.1-SNAPSHOT</version> -->
<groupId>oschina</groupId>
<artifactId>oschina.simple</artifactId>
<version>1.0</version>
<name>oschina.simple Maven Webapp</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.7</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8888</port>
<maxIdleTime>30000</maxIdleTime>
</connector>
</connectors>
<webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
<contextPath>/</contextPath>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!--dependency>
<groupId>MavenDemo</groupId>
<artifactId>[the artifact id of the block to be mounted]</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency-->
<!-- mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
</dependencies>
</project>
包括web.xml,spring-servlet.xml,applicationContext.xml,spring-quartz.xml等配置文件以及mail.properties资源文件的配置。
web.xml配置文件:
spring-servlet.xml配置文件:
applicationContext.xml配置文件:
mail.properties资源文件:
Settings.mailserver.host=smtp.qq.com 此处使用qq邮箱smtp服务,当然也可以选择其他smtp服务
Settings.mailserver.username=######qq.com 此处注意加上@qq.com
Settings.mailserver.password=###### 此处为qq邮箱开通smtp服务后的第二个密码
Settings.mailtplt.from=######@qq.com 注意要与Settings.mailserver.username内容保存一致,即同一个邮箱地址
Settings.mailserver.port=25 大部分邮箱端口号都为25
mail.smtp.auth=true
mail.default.from=######@qq.com
spring-quartz.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="sendMail" class="com.cnood.schedule.action.SendMail" />
<!--这里targetobject对应自己需要定时执行发送邮件任务的类对象,targetmethod对应需要这个类下需要执行的方法,concurrent应该是并发执行的意思-->
<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="sendMail" />
<property name="targetMethod" value="sendTimingMail" />
<property name="concurrent" value="false" />
</bean>
<!--配置调度执行的触发的时间-->
<!-- 配置触发器,这里spring3.1以前,是CronTriggerBean,spring3.1以后,是CronTriggerFactoryBean,此处使用spring4.1的spring-context-support-4.1.5-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 这里不可以直接在属性jobDetail中引用taskJob,因为他要求的是一个jobDetail类型的对象,所以我们得通过MethodInvokingJobDetailFactoryBean来转一下 -->
<property name="jobDetail" ref="myJobDetail" />
<!--此处的意思是每天早上十点47启动自动执行发送邮件任务-->
<property name=“cronExpression">
<!--7位的cron表达式-->
<value>0 47 10 * * ?</value>
</property>
</bean>
<!-- 设置调度 -->
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger" />
<!-- <ref bean="simpleTrigger" /> -->
</list>
</property>
</bean>
</beans>
3.定时发送邮件代码:
com.cnood.schedule.action.SendMail类
model之中,是传递的velocity模板中的注入的参数
第一个方法,只能发送纯文本模板,第二个方法则是可以发送html模板
4.邮件模板
welcome.vm
在applicationContext.xml配置文件中,id为velocityEngine的bean中设置了路径
applicationContext.xml中velocityEngine还有另外一种写法,不过vm模板必须保存在WEB-INF/classes目录下才能读取
这种写法:
5.按钮触发邮件发送任务
mail.jsp代码:
此处只是做两个简单的按钮,注意jsp放在web-app目录下
action:com.cnood.email.action.SendTestEmail,代码如下:
好了,写下这么多,希望对读者能够产生一些帮助!
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<!-- <name>SendEmail</name>
<groupId>MavenDemo</groupId>
<artifactId>SendEmail</artifactId>
<version>0.0.1-SNAPSHOT</version> -->
<groupId>oschina</groupId>
<artifactId>oschina.simple</artifactId>
<version>1.0</version>
<name>oschina.simple Maven Webapp</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.7</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8888</port>
<maxIdleTime>30000</maxIdleTime>
</connector>
</connectors>
<webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
<contextPath>/</contextPath>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!--dependency>
<groupId>MavenDemo</groupId>
<artifactId>[the artifact id of the block to be mounted]</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency-->
<!-- mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
</dependencies>
</project>
<span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">2.Spring-MVC配置文件</span>
包括web.xml,spring-servlet.xml,applicationContext.xml,spring-quartz.xml等配置文件以及mail.properties资源文件的配置。
web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 指定Spring Bean的配置文件所在目录。默认配置在WEB-INF目录下 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/applicationContext.xml</param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/config/log4j.properties</param-value> </context-param> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/config/spring-servlet.xml /WEB-INF/config/spring-quartz.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>此处,我仍然使用spring3的配置方法。配置文件,被我放在web-app/WEB-INF/config下。
spring-servlet.xml配置文件:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 启用spring mvc注解--> <mvc:annotation-driven /> <!-- 设置使用注解的类所在的jar包 --> <context:component-scan base-package="com.cnood.email" /> <!-- 用于扫描@schedule定时任务 --> <context:component-scan base-package="com.cnood.schedule"&g 4000 t; <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- annotation默认的方法映射适配器 --> <bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> </beans>
applicationContext.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- carl --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/config/mail.properties</value> </list> </property> </bean> <!-- carl --> <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage" scope="singleton"> <property name="from" value="${Settings.mailtplt.from}"/> </bean> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">${Settings.mailtplt.from}</prop> <prop key="mail.smtp.starttls.enable">true</prop> <prop key="mail.mime.charset">UTF-8</prop> <prop key="mail.transport.protocol">smtp</prop> </props> </property> <property name="host" value="${Settings.mailserver.host}" /> <property name="username" value="${Settings.mailserver.username}" /> <property name="password" value="${Settings.mailserver.password}" /> <property name="port" value="${Settings.mailserver.port}"/> <property name="defaultEncoding" value="UTF-8"></property> </bean> <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage" > <property name="from" value="${Settings.mailtplt.from}" /> </bean> <!-- 用于自己指定vm存放目录 --> <bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> <property name="resourceLoaderPath" value="WEB-INF/velocity/email/"></property> </bean> <bean id="mailSenderService" class="com.cnood.email.service.MailSenderService"> <property name="mailSender" ref="mailSender" /> <property name="simpleMailMessage" ref="simpleMailMessage" /> <!-- 如果使用Vilocity --> <property name="velocityEngine" ref="velocityEngine" /> </bean> <!-- jsp视图解析器 --> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
mail.properties资源文件:
Settings.mailserver.host=smtp.qq.com 此处使用qq邮箱smtp服务,当然也可以选择其他smtp服务
Settings.mailserver.username=######qq.com 此处注意加上@qq.com
Settings.mailserver.password=###### 此处为qq邮箱开通smtp服务后的第二个密码
Settings.mailtplt.from=######@qq.com 注意要与Settings.mailserver.username内容保存一致,即同一个邮箱地址
Settings.mailserver.port=25 大部分邮箱端口号都为25
mail.smtp.auth=true
mail.default.from=######@qq.com
spring-quartz.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="sendMail" class="com.cnood.schedule.action.SendMail" />
<!--这里targetobject对应自己需要定时执行发送邮件任务的类对象,targetmethod对应需要这个类下需要执行的方法,concurrent应该是并发执行的意思-->
<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="sendMail" />
<property name="targetMethod" value="sendTimingMail" />
<property name="concurrent" value="false" />
</bean>
<!--配置调度执行的触发的时间-->
<!-- 配置触发器,这里spring3.1以前,是CronTriggerBean,spring3.1以后,是CronTriggerFactoryBean,此处使用spring4.1的spring-context-support-4.1.5-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 这里不可以直接在属性jobDetail中引用taskJob,因为他要求的是一个jobDetail类型的对象,所以我们得通过MethodInvokingJobDetailFactoryBean来转一下 -->
<property name="jobDetail" ref="myJobDetail" />
<!--此处的意思是每天早上十点47启动自动执行发送邮件任务-->
<property name=“cronExpression">
<!--7位的cron表达式-->
<value>0 47 10 * * ?</value>
</property>
</bean>
<!-- 设置调度 -->
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger" />
<!-- <ref bean="simpleTrigger" /> -->
</list>
</property>
</bean>
</beans>
3.定时发送邮件代码:
com.cnood.schedule.action.SendMail类
package com.cnood.schedule.action; import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import com.cnood.email.service.MailSenderService; public class SendMail { @Autowired private MailSenderService mailSender; public void sendTimingMail(){ int i; mailSender.setTo("carl@cnood.com"); mailSender.setSubject("文本测试邮件"); mailSender.setTemplateName("welcome.vm");//设置的邮件模板 Map model=new HashMap(); model.put("userName", "xxx"); <span style="font-family: Arial, Helvetica, sans-serif;">//此处连续发送诗词次邮件模板</span>
for(i=0;i<10;i++){ mailSender.sendWithTemplate(model); System.out.println("邮件发送成功!"); } } }com.cnood.email.service.MailSenderService.java,这是一个发送邮件的工具类,代码如下:
package com.cnood.email.service; import java.io.File; import java.util.Map; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.velocity.app.VelocityEngine; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.ui.velocity.VelocityEngineUtils; public class MailSenderService{ private VelocityEngine velocityEngine;//spring配置中定义 //private FreeMarkerConfigurer freeMarkerConfigurer; private JavaMailSender mailSender;//spring配置中定义 private SimpleMailMessage simpleMailMessage;//spring配置中定义 private String from; private String to; private String subject; private String content; private String templateName; // 是否需要身份验证 private boolean validate = false; /* public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer){ this.freeMarkerConfigurer = freeMarkerConfigurer; } */ public VelocityEngine getVelocityEngine() { return velocityEngine; } public void setVelocityEngine(VelocityEngine velocityEngine){ this.velocityEngine = velocityEngine; } public JavaMailSender getMailSender() { return mailSender; } public void setMailSender(JavaMailSender mailSender){ this.mailSender = mailSender; } public SimpleMailMessage getSimpleMailMessage() { return simpleMailMessage; } public void setSimpleMailMessage(SimpleMailMessage simpleMailMessage) { this.simpleMailMessage = simpleMailMessage; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getTo() { return to; } public void setTo(String to) { this.to = to; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getTemplateName() { return templateName; } public void setTemplateName(String templateName) { this.templateName = templateName; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } /** * 发送模板邮件 * */ public void sendWithTemplate(Map model){ mailSender = this.getMailSender(); simpleMailMessage.setTo(this.getTo()); //接收人 simpleMailMessage.setFrom(simpleMailMessage.getFrom()); //发送人,从配置文件中取得 simpleMailMessage.setSubject(this.getSubject()); String result = null; try { result = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateName, "UTF-8",model); } catch (Exception e) {} simpleMailMessage.setText(result); mailSender.send(simpleMailMessage); } /** * 发送普通Html模板邮件 * @throws MessagingException * */ public void sendHtml(Map model) throws MessagingException{ mailSender = this.getMailSender(); MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage,true); String result = null; try { result = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, templateName, "UTF-8",model); } catch (Exception e) {} try { messageHelper.setTo(this.getTo()); messageHelper.setFrom(simpleMailMessage.getFrom()); messageHelper.setSubject(this.getSubject()); messageHelper.setText(result,true); } catch (MessagingException e) { e.printStackTrace(); } mailSender.send(mimeMessage); }
model之中,是传递的velocity模板中的注入的参数
第一个方法,只能发送纯文本模板,第二个方法则是可以发送html模板
4.邮件模板
welcome.vm
<html> <body> 您好 $!{userName}, 欢迎您加入! <br/> </body> </html></span>此处模板的路径:webapp/WEB-INF/velocity/email/welcome.vm
在applicationContext.xml配置文件中,id为velocityEngine的bean中设置了路径
applicationContext.xml中velocityEngine还有另外一种写法,不过vm模板必须保存在WEB-INF/classes目录下才能读取
这种写法:
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> <property name="velocityProperties"> <props> <prop key="resource.loader">file</prop> <prop key="file.resource.loader.path">.</prop> <prop key="file.resource.loader.class"> org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader </prop> <prop key="input.encoding">UTF-8</prop> <prop key="output.encoding">UTF-8</prop> </props> </property> </bean>
5.按钮触发邮件发送任务
mail.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>My JSP 'user_add.jsp' starting page</title> <script> function sendTextEmail(){ $.post("${pageContext.request.contextPath}/email/sendTextEmail.do"); } function sendHtmlEmail(){ $.post("${pageContext.request.contextPath}/email/sendHtmlEmail.do"); } </script> <style> body{TEXT-ALIGN: center;} #center{ MARGIN-RIGHT: auto; MARGIN-LEFT: auto; height:200px; background:#F00; width:400px; vertical-align:middle; line-height:200px; } </style> </head> <body> <div id="center"> 邮件发送<br/> <button name="邮件发送" onclick="sendTextEmail();">文本邮件发送</button> <button name="邮件发送" onclick="sendHtmlEmail();">Html邮件发送</button> </div> </body> <script src="${pageContext.request.contextPath}/jquery/jquery-1.11.3.js" type="text/javascript"></script> </html>
此处只是做两个简单的按钮,注意jsp放在web-app目录下
action:com.cnood.email.action.SendTestEmail,代码如下:
package com.cnood.email.action; import java.util.HashMap; import java.util.Map; import javax.mail.MessagingException; import org.spring 9a0d framework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.cnood.email.service.MailSenderService; @Controller @RequestMapping("/email") public class SendTestEmail { @Autowired private MailSenderService mailSender; @RequestMapping("/sendTextEmail.do") public void sendTestEmail(){ mailSender.setTo("xxx@xxx.com"); mailSender.setSubject("文本测试邮件"); mailSender.setTemplateName("welcome.vm");//设置的邮件模板 Map model=new HashMap(); model.put("userName", "xxx"); mailSender.sendWithTemplate(model); System.out.println("邮件发送成功!"); } @RequestMapping("/sendHtmlEmail.do") public void sendHtmlEmail() throws MessagingException{ mailSender.setTo("xxx@xxx.com"); mailSender.setSubject("文本测试邮件"); mailSender.setTemplateName("welcome.vm");//设置的邮件模板 Map model=new HashMap(); model.put("userName", "xxx"); mailSender.sendHtml(model);</span> System.out.println("邮件发送成功!"); <span style="font-family: Arial, Helvetica, sans-serif;">}}
好了,写下这么多,希望对读者能够产生一些帮助!
相关文章推荐
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- [Java] JavaMail 发送带图片的 html 格式的邮件
- JSP与JavaMail(4)---发送HTML格式的邮件
- Perl 通过SMTP发送正文为HTML格式的邮件
- C#利用System.Net发送邮件(带 抄送、密送、附件、html格式的邮件)
- SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件
- 如何通过 ASP 来发送带附件、格式为 HTML 的邮件?下面提供了一个例程.
- 使用Spring计时器和velocity模板定时生成静态html/jsp文件
- HTML格式自定义OpenCart邮件模板功能插件
- php mail()方法发送html格式的邮件
- 如何用ASP发送html格式的邮件?
- linux发送html格式邮件,邮箱收不到html格式问题
- 用Python实现在Linux环境发送带附件的邮件,支持文本/html格式
- 用Java发送HTML格式邮件测试类(支持中文)
- javaMail实现以html格式发送邮件
- JAVAMAIL发送邮件正文是html格式并且显示图片还带有附件的邮件
- SMTP邮件格式、SMTP 协议,SMTP的MIME写法,SMTP发送HTML邮件
- EBS中使用JAVA方式发送HTML格式邮件