0


SpringBoot实现 内置 定时 发送邮件功能

在这里插入图片描述

前段时间因为公司用了定时任务,所以写了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);}}

完整项目结构 ,当然 你也加一套增删改查进去,例如输入谁的邮箱开启定时任务 ,这样就会比枯燥的代码有趣许多

源码地址

下载好代码之后记得修改授权码尝试一下
在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_42897427/article/details/129096252
版权归原作者 刘架构 所有, 如有侵权,请联系我们删除。

“SpringBoot实现 内置 定时 发送邮件功能”的评论:

还没有评论