前段时间因为公司用了定时任务,所以写了2篇定时任务的文章,一篇是正常如何在Springboot 编程中如何去使用quartz ,第二篇就是 正常业务性的增删改查,今天我们来看下如何使用 quartz 去定时给女朋友发邮件 ,结尾会放上完整代码
- Springboot 在Java使用 定时任务
- Springboot 使用quartz CRUD
首先你是不是要发邮件,那你就需要用到Springboot 整合邮件 ,导入下面三个依赖,当然如果你还想把给女朋友发的邮件存数据库 你还要加一个 MyBATIS 和 Mysql
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>com.sun.mail</groupId><artifactId>jakarta.mail</artifactId><version>1.6.4</version><scope>compile</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope></dependency>
我们导入好依赖之后
配置授权码
接下来需要配置一下 yam
# 配置你发邮件的 账号
[email protected]
# 注意 这里不是密码 ,是授权码
spring.mail.password=oqkesvkbzromecje
spring.mail.host=smtp.qq.com
#开启加密规则
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.password
上面的 这一项不是密码 是授权码
这里我们以QQ邮箱为例 ,你需要得到一个 授权码
然后咱们发送邮件之后, 就可以了
配置任务
要使用定时任务,我们就需要定义任务 ,不懂的小伙伴可以去看我之前的文章,这里我们简单搞下
importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.mail.javamail.JavaMailSenderImpl;importorg.springframework.mail.javamail.MimeMessageHelper;importorg.springframework.scheduling.annotation.Async;importorg.springframework.scheduling.annotation.Scheduled;importorg.springframework.stereotype.Component;importjavax.mail.MessagingException;importjavax.mail.internet.MimeMessage;importjava.io.File;importjava.util.Date;@Slf4j@ComponentpublicclassMailConfig{@AutowiredJavaMailSenderImpl javaMailSender;@Scheduled(cron ="0/7 * * * * ?")@BeanpublicvoidloadBean()throwsMessagingException{
log.info("测试发送 邮件 ---------》 "+newDate());MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper =newMimeMessageHelper(mimeMessage,true);
helper.setSubject("hello byc");
helper.setText("<b style='color:red'>测试一个复杂邮件</b>",true);
helper.addAttachment("1.jpg",newFile("D:\\Computer\\图片\\Snipaste_2023-02-11_14-47-17.png"));
helper.setTo("[email protected]");
helper.setFrom("[email protected]");
javaMailSender.send(mimeMessage);}}
由于我们之前导入了依赖,所以可以直接用 MimeMessage 去发送邮件 ,上面的
@Scheduled(cron = "0/7 * * * * ?")
这就是核心,我们标注了这个注解就相当于 这个方法可以定时发送
MimeMessageHelper : 这个是发送邮件的复杂对象,我们可以看到 下面定义了 发送的内容 以及 发送的字体颜色, 还有图片 ,我们可以看到
- 格式
/**
* 在特定的时间执行
* cron表达式
* (1)0/2 * * * * ? 表示每2秒 执行任务
* (1)0 0/2 * * * ? 表示每2分钟 执行任务
* (1)0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务
* (2)0 15 10 ? * MON-FRI 表示周一到周五每天上午10:15执行作业
* (3)0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的最后一个星期五上午10:15执行作
* (4)0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
* (5)0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
* (6)0 0 12 ? * WED 表示每个星期三中午12点
* (7)0 0 12 * * ? 每天中午12点触发
* (8)0 15 10 ? * * 每天上午10:15触发
* (9)0 15 10 * * ? 每天上午10:15触发
* (10)0 15 10 * * ? 每天上午10:15触发
* (11)0 15 10 * * ? 2005 2005年的每天上午10:15触发
* (12)0 * 14 * * ? 在每天下午2点到下午2:59期间的每1分钟触发
* (13)0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
* (14)0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
* (15)0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
* (16)0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44触发
* (17)0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
* (18)0 15 10 15 * ? 每月15日上午10:15触发
* (19)0 15 10 L * ? 每月最后一日的上午10:15触发
* (20)0 15 10 ? * 6L 每月的最后一个星期五上午10:15触发
* (21)0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最后一个星期五上午10:15触发
* (22)0 15 10 ? * 6#3 每月的第三个星期五上午10:15触发
* */
接下来我们在Springboot 项目中加入注解
/**
* 开启异步注解的功能
* 开启定时任务的注解
*
* @author 全栈小刘
*/@EnableScheduling@EnableAsync@SpringBootApplicationpublicclassDemo4Application{publicstaticvoidmain(String[] args){SpringApplication.run(Demo4Application.class, args);}}
完整项目结构 ,当然 你也加一套增删改查进去,例如输入谁的邮箱开启定时任务 ,这样就会比枯燥的代码有趣许多
源码地址
下载好代码之后记得修改授权码尝试一下
版权归原作者 刘架构 所有, 如有侵权,请联系我们删除。