项目代码

pom.xml 文件
Quartz 的包是整个项目不可缺少的

  1 <properties>
2 <!-- Spring的版本 -->
3 <springframework.version>4.0.6.RELEASE</springframework.version>
4 <!-- Quartz的版本 -->
5 <quartz.version>2.2.1</quartz.version>
6 </properties>
7
8 <dependencies>
9 <dependency>
10 <groupId>junit</groupId>
11 <artifactId>junit</artifactId>
12 <version>3.8.1</version>
13 <scope>test</scope>
14 </dependency>
15
16 <dependency>
17 <groupId>javax.servlet</groupId>
18 <artifactId>javax.servlet-api</artifactId>
19 <version>3.0.1</version>
20 </dependency>
21
22 <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
23 <dependency>
24 <groupId>javax.mail</groupId>
25 <artifactId>mail</artifactId>
26 <version>1.4</version>
27 </dependency>
28
29 <dependency>
30 <groupId>org.quartz-scheduler</groupId>
31 <artifactId>quartz</artifactId>
32 <version>${quartz.version}</version>
33 </dependency>
34
35 <!-- spring -->
36 <dependency>
37 <groupId>org.springframework</groupId>
38 <artifactId>spring-context-support</artifactId>
39 <version>${springframework.version}</version>
40 </dependency>
41
42 <dependency>
43 <groupId>org.springframework</groupId>
44 <artifactId>spring-tx</artifactId>
45 <version>${springframework.version}</version>
46 </dependency>
47
48 <dependency>
49 <groupId>org.springframework</groupId>
50 <artifactId>spring-web</artifactId>
51 <version>${springframework.version}</version>
52 </dependency>
53
54 <dependency>
55 <groupId>org.springframework</groupId>
56 <artifactId>spring-webmvc</artifactId>
57 <version>${springframework.version}</version>
58 </dependency>
59 </dependencies>

MyJob.java 继承 QuartzJobBean 然后 Override
有钻研精神的可以一点一点扒代码看 QuartzJobBean 。

  1 import org.quartz.JobExecutionContext;
2 import org.quartz.JobExecutionException;
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 import org.springframework.scheduling.quartz.QuartzJobBean;
6
7 import java.util.Date;
8
9 /**
10 * kzyuan Job 参考
11 * @description black husk
12 * @description http://www.bhusk.com
13 */
14 public class MyJob extends QuartzJobBean {
15
16 private static Logger logger = LoggerFactory.getLogger(DatabaseBackupJob.class);
17
18 @Override
19 protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
20
21 System.out.println("执行时间:"+new Date());
22 }
23 }

application.xml 可以理解为 quartz 配置文件 注释很齐全

  1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
4 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
8 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
9 http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
10
11 <!-- 定义任务bean -->
12 <bean name="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
13 <!-- 指定具体的job类 -->
14 <property name="jobClass" value="com.bhusk.quartz.Job.MyJob"/>
15 <!-- 指定job的名称 -->
16 <property name="name" value="myJob"/>
17 <!-- 指定job的分组 -->
18 <property name="group" value="jobs"/>
19 <!-- 必须设置为true,如果为false,当没有活动的触发器与之关联时会在调度器中删除该任务 -->
20 <property name="durability" value="true"/>
21 <!-- 指定spring容器的key,如果不设定在job中的jobmap中是获取不到spring容器的 -->
22 <property name="applicationContextJobDataKey" value="applicationContext"/>
23 </bean>
24
25 <!-- 定义触发器 -->
26 <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
27 <property name="jobDetail" ref="myJobDetail"/>
28 <!--执行时间 -->
29 <property name="cronExpression" value="0 0 3 * * ?"/>
30 </bean>
31
32 <!-- 定义触发器 -->
33 <!--演示:一个job可以有多个trigger; -->
34 <!--<bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">-->
35 <!--<property name="jobDetail" ref="myJobDetail2" />-->
36 <!--每一分钟执行一次-->
37 <!-- <property name="cronExpression" value="0 0 3 * * ?"/> -->
38 <!--</bean>-->
39
40 <!-- 定义调度器 -->
41 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
42 <property name="triggers">
43 <list>
44 <ref bean="cronTrigger"/>
45 <!-- <ref bean="cronTrigger2"/> -->
46 </list>
47 </property>
48 </bean>
49
50 </beans>

JavaMail 发送邮件工具类
java 实现邮件的发送, 抄送及多附件
这个工具类来源网络,具体精准位置也不清楚了

  1         // 设置发件人
2 // mimeMsg.setFrom(new InternetAddress(from));
3 mimeMsg.setFrom(new InternetAddress(from, nick));
4 // 设置收件人
5 if (to != null && to.length() > 0) {
6 mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
7 }
8 // 设置抄送人
9 if (cc != null && cc.length() > 0) {
10 mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
11 }
12 // 设置主题
13 mimeMsg.setSubject(subject);
14 // 设置正文
15 BodyPart bp = new MimeBodyPart();
16 bp.setContent(content, "text/html;charset=utf-8");
17 mp.addBodyPart(bp);
18 // 设置附件
19 if (fileList != null && fileList.length > 0) {
20 for (int i = 0; i < fileList.length; i++) {
21 bp = new MimeBodyPart();
22 FileDataSource fds = new FileDataSource(fileList[i]);
23 bp.setDataHandler(new DataHandler(fds));
24 bp.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));
25 mp.addBodyPart(bp);
26 }
27 }
28 mimeMsg.setContent(mp);
29 mimeMsg.saveChanges();
30 // 发送邮件
31 if (props.get("mail.smtp.auth").equals("true")) {
32 Transport transport = session.getTransport("smtp");
33 transport.connect((String) props.get("mail.smtp.host"), (String) props.get("username"), (String) props.get("password"));
34 transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
35 transport.close();
36 } else {
37 Transport.send(mimeMsg);
38 }
39 System.out.println("邮件发送成功");
40 } catch (MessagingException e) {
41 e.printStackTrace();
42 success = false;
43 } catch (UnsupportedEncodingException e) {
44 e.printStackTrace();
45 success = false;
46 }
47 return success;
48 }
49
50 public String getMailList(String[] mailArray) {
51 StringBuffer toList = new StringBuffer();
52 int length = mailArray.length;
53 if (mailArray != null && length < 2) {
54 toList.append(mailArray[0]);
55 } else {
56 for (int i = 0; i < length; i++) {
57 toList.append(mailArray[i]);
58 if (i != (length - 1)) {
59 toList.append(",");
60 }
61
62 }
63 }
64 return toList.toString();
65 }
66
67 public static void main(String[] args) {
68 String from = username;
69 String[] to = {"keshu@bhusk.com", "1520812121@qq.com"};
70 String[] copyto = {"lu12121@qq.com"};
71 String subject = "黑壳网数据库备份";
72 String content = "没有数据就没有一切,数据库备份就是一种防范灾难于未然的强力手段,没有了数据,应用再花哨也是镜中花水中月。";
73 String[] fileList = new String[2];
74 fileList[0] = "~/solo_h2/db.mv.db";
75 fileList[1] = "~/solo_h2/db.trace.db";
76
77 EmailManager.getInstance().sendMail(from, to, copyto, subject, content, fileList);
78 }
79 }

参考项目 GitHub:https://github.com/ykz200/Quartz_DatabaseBackup

本文出自于:ykz200

Quartz 定时邮件发送多个备份文件的更多相关文章

  1. Java系列--第八篇 基于Maven的SSME之定时邮件发送

    关于ssme这个我的小示例项目,想做到麻雀虽小,五脏俱全,看到很多一些web都有定时发送邮件的功能,想我ssme也加入一下这种功能,经查询相关文档,发现spring本身自带了一个调度器quartz,下 ...

  2. 项目一:第十四天 1.在realm中动态授权 2.Shiro整合ehcache 缓存realm中授权信息 3.动态展示菜单数据 4.Quartz定时任务调度框架—Spring整合javamail发送邮件 5.基于poi实现分区导出

    1 Shiro整合ehCache缓存授权信息 当需要进行权限校验时候:四种方式url拦截.注解.页面标签.代码级别,当需要验证权限会调用realm中的授权方法   Shiro框架内部整合好缓存管理器, ...

  3. [原创] zabbix学习之旅六:如何解决zabbix server在内网,而邮件发送服务器在外网的问题

    通过前面的文章,你已经可以快速地搭建一个报警系统,并能正常的收到报警邮件了.不过在很多企业级环境下,邮件发送服务器往往放在外网,而zabbix server放置在内网,在这种情况下,zabbix的报警 ...

  4. spring利用javamail,quartz定时发送邮件 <转>

    原文地址:spring利用javamail,quartz定时发送邮件 <转>作者:物是人非 spring提供的定时发送邮件功能,下面是一个简单的例子以供大家参考,首先从spring配置文件 ...

  5. 基于javaMail的邮件发送--excel作为附件

    基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...

  6. IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (一)

    邮件发送功能总结        第一部分 背景   一.使用场景 (1)注册验证    注册各大网站,通常需要输入邮件地址,在注册成功后,会发送一封邮箱验证的邮件,点击确认,证明这个邮箱是用户自己的 ...

  7. Spring整合Quartz定时发送邮件

    功能描述:刚开始接触Quartz,试着用Quartz整合spring实现每隔一分钟发送一封邮件连续发送10次 核心jar: 邮件发送:commons-email-1.2.jar mail.jar(必须 ...

  8. 【Linux】结合Python 简易实现监控公司网站,邮件发送异常

    背景 由于一些原因,博主负责测试的网站的服务器切换到了香港,切换后出现了多次访问超时的情况 于是主动请缨写一个自动监测的脚本,本来准备完全使用shell来写,后来发现shell发送邮件只能在测试机之间 ...

  9. Java 基于javaMail的邮件发送(支持附件)

    基于JavaMail的Java邮件发送Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用户 ...

随机推荐

  1. 安装使用hibernate tools

    help-Eclipse marketplace-hibernate(搜索)-jboss tools(安装)

  2. Jenkins自动发布代码实战篇

    Jenkins自动发布代码实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.Jenkins服务器配置秘钥对并上传到Gitlab中 1>.在Jenkins后端生成秘钥 ...

  3. python自动化运维之路~DAY3

    python自动化运维之路~DAY3 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数 1.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不 ...

  4. 函数和常用模块【day06】:subprocess模块(十)

    本节内容 1.概述 2.前言 3.subprocess模块 4.subprocess.Popen() 一.概述 我们在实际的工作中,需要跟操作系统的命令做交互,但我们如何用python去跟操作系统之间 ...

  5. Ubuntu 下 Tomcat7 的安装和配置

    tomcat下载地址:http://tomcat.apache.org/download-70.cgi 声明:下面的内容和原创笔者的博文的内容差不多,不一样的只是tomcat7的安装目录不同,我按照我 ...

  6. js 锚点定位【转】

    锚点定义 <a name="firstAnchor">&nsbp;</a> a标签锚点使用 <a href="#firstAncho ...

  7. buildroot构建项目(三)--- u-boot 2017.11 适配开发板修改 1

    当前虽然编译成功了,但是对于我们自己的目标板并不太适用.还得做一系列得修改. 一.lds 文件分析 u-boot 中最重要得链接文件即是,u-boot.lds.我们可以查看我们编译出来得 u-boot ...

  8. linux4.10.8 内核移植(三)---裁剪内核

    一.裁剪内核 1.1 第一次修改 现在的内核大小为2.8M左右,要裁剪到2.0M以下,毕竟给内核分区就只有2.0M. 这两个设备我们没有,裁剪掉. 进入make menuconfig中,搜索mouse ...

  9. CSS——margin

    CSS margin 属性 定义和用法 margin 简写属性在一个声明中设置所有外边距属性.该属性可以有 1 到 4 个值. 说明 这个简写属性设置一个元素所有外边距的宽度,或者设置各边上外边距的宽 ...

  10. 一分钟了解contextlib模块

    cobtextlib模块用于简化上下文管理器,其内置装饰漆@contextmanager,我们通过编写一个被contextmanager装饰的generator来简化上下文管理. from conte ...