Spring Quartz结合Spring mail定期发送邮件

文件配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	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" >
    <bean
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:mail.properties" />
	</bean>
   <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
   		<property name="host" >
   			<value>${host}</value>
   		</property>
   		<property name="username" >
   			<value>${username}</value>
   		</property>
   		<property name="password" >
   			<value>${password}</value>
   		</property>
   		   <property name="javaMailProperties">
   		   		<props>
   		   			<prop key="mail.smtp.auth">true</prop>
   		   			<prop key="mail.smtp.timeout">25000</prop>
   		   		</props>
   		   </property>
   </bean>
    <import resource="spring-quartz2.xml"/>
    <context:component-scan base-package="com.study"/>
</beans>

spring-quartz2.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" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:task="http://www.springframework.org/schema/task"
	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/task
    http://www.springframework.org/schema/task/spring-task-3.0.xsd  " >
    <task:annotation-driven/>
</beans>
package com.study;

import java.io.File;

import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;
@Component
public class QuartzJob{
	@Autowired
	private JavaMailSender jms;
	private SimpleMailMessage smm;
	private MimeMessage mailMsg;

	public QuartzJob() throws ServletException{
		//initSimpleMailMSG();
		//initHTMLMailMSG();
		initHTMLWithAttachMailMsg();
		System.out.println("Quartzjob创建成功");
	}
	@Scheduled(cron = "0/1 * *  * * ? ")
	public void run(){
		System.out.println("Quartz执行的任务调度发送邮件");
		try {
			//jms.send(smm);
			jms.send(mailMsg);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private void initSimpleMailMSG(){//发送简单邮件
		smm = new SimpleMailMessage();
		smm.setTo("[email protected]");
		smm.setFrom("[email protected]");
		smm.setSubject("测试邮件");
		smm.setText("springMail的简单测试发送邮件");
	}
	private void initHTMLMailMSG(){//发送HTML格式的邮件
		 JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
		 mailMsg = senderImpl.createMimeMessage();
		 try {
			 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMsg,true,"utf-8");
			 messageHelper.setTo("[email protected]");//接受者
			 messageHelper.setFrom("[email protected]");//发送者
			 messageHelper.setSubject("测试邮件");//主题
			 //邮件内容,注意加参数true,表示启用html格式
			 messageHelper.setText("<html><head></head><body><h1>hello!!chao.wang</h1><font color=‘red‘>BaBY</font></body></html>",true);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private void initHTMLWithAttachMailMsg(){//发送带附件的邮件
		JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
	    mailMsg = senderImpl.createMimeMessage();
		 try {
			 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMsg,true,"utf-8");
			 messageHelper.setTo("[email protected]");//接受者
			 messageHelper.setFrom("[email protected]");//发送者
			 messageHelper.setSubject("测试邮件");//主题
			 messageHelper.setText("<html><head></head><body><h1>hello!!chao.wang</h1></body></html>",true);
			 //附件内容
			 messageHelper.addInline("a", new File("E:/xiezi.png"));
			// messageHelper.addInline("b", new File("E:/logo.png"));
			 // 这里的方法调用和插入图片是不同的,使用MimeUtility.encodeWord()来解决附件名称的中文问题
			// messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

邮件发送带附件存在问题。

Spring Quartz结合Spring mail定期发送邮件,布布扣,bubuko.com

时间: 2024-10-10 05:17:30

Spring Quartz结合Spring mail定期发送邮件的相关文章

spring+quartz,动态注册job

Spring+Quartz的整合有很多例子,此处不提整合; 若配置固定的job,常常使用MethodInvokingJobDetailFactoryBean,也不错, 可问题的根源在于 这个类没实现 Serializable接口, 导致了将job信息存入数据库中时,它不工作了, 这是诱因之一. 以下是文章的主要内容. 前提及目标 1.job信息存入数据库 2.可给项目添加固定的job(写在配置文件里的),也可以添加动态的job(如定时发送邮件,由JAVA代码添加job) 3.要能在实际项目中有使

Spring 定时器 定时访问数据库并发送邮件

我这里有两个案例的方法: 第一种:使用Spring quartz: 我这里使用的jar:spring-context-support.jar.quartz-1.6.5.jar ==============applicationContext.xml配置================= <!--定时器service-->    <bean id="timerTaskServices" class="com.gzbugu.service.TimerTaskSe

atititt.java定时任务框架选型Spring Quartz 注解总结

atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增加context,task命名空间xml: 2 2.2. 增加xsi:schemaLocation valide 2 2.3. 我们的task任务扫描注解in spr.xml 2 2.4. 设置运行方法 3 2.5. 设置输出日志 3 3. 运行测试sprX走ok兰. 4 4. Quartz Sch

Quartz与Spring的整合使用

之前说到过Quartz的基本使用(猛戳这里看文章).在实际使用中,我们一般会将定时任务交由spring容器来管理.所以今天我们来说说Quartz与spring的整合. 咱们还是依照Quartz的三大元素的顺序来聊聊整合使用. 作业任务 在spring中对于Quartz的作业任务管理主要提供了两种方式,JobDetailFactoryBean和MethodInvokingJobDetailFactoryBean,它们都在org.springframework.scheduling.quartz这个

java计划任务调度框架quartz结合spring实现调度的配置实例代码分享

点击链接加入群[JavaEE(SSH+IntelliJIDE+Maven)]:http://jq.qq.com/?_wv=1027&k=L2rbHv 一:quartz简介 OpenSymphony 的Quartz提供了一个比较完美的任务调度解决方案. Quartz 是个开源的作业调度框架,定时调度器,为在 Java 应用程序中进行作业调度提供了简单却强大的机制. Quartz中有两个基本概念:作业和触发器.作业是能够调度的可执行任务,触发器提供了对作业的调度 二:quartz spring配置详

Tomcat+Spring+Quartz Restart or shutdown error

环境描述 Intellij Idea 14.1.7 Tomcat 6.0.48 Spring 2.5.6.SEC01 Quartz 1.8.5 问题描述 在 Intellij Idea 中首次可以正常启动 Tomcat 和 Web 应用,但是在 Intellij Idea 中执行重启的时候,控制台中就会包以下的错误,导致无法正常重启或者关闭,必须要启动任务管理器, 强制杀调 java.exe 进程才行. 严重: The web application [] appears to have sta

【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永不过期

官网说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 公众平台的API调用所需的access_token的使用及生成方式说明: 1.为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器.而其他业务逻辑服务器所

Java之旅--定时任务(Timer、Quartz、Spring、LinuxCron)

在Java中,实现定时任务有多种方式.本文介绍4种.Timer和TimerTask.Spring.QuartZ.Linux Cron. 以上4种实现定时任务的方式.Timer是最简单的.不须要不论什么框架,只JDK就能够.缺点是不过个时间间隔的定时器,调度简单.Spring和QuartZ都支持cron,功能都非常强大,Spring的长处是略微简单一点,QuartZ的长处是没有Spring也可使用:Linux Cron是个操作系统级别的定时任务.适用于全部操作系统支持的语言,缺点是精度只能到达分钟

Spring+quartz 实现定时任务job集群配置

为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真实结果的3倍,那对银行来说是无法想象的,完全不可接受. 集群定时任务工作原理 所以为了解决以上问题,每个server把将要及正在运行的job所有状态都即时同步到中央数据库,然后再次触发调用时从数据库中分析是否已有别的server正在运行相同job (同名同定时时间点的job属于相当job),如果相同