SpringBoot整合定时任务和Emil发送

定时任务

​ 任务系统指的是定时任务。定时任务是企业级开发中必不可少的组成部分,诸如长周期业务数据的计算,例如年度报表,诸如系统脏数据的处理,再比如系统性能监控报告,还有抢购类活动的商品上架,这些都离不开定时任务。在SpringBoot中使用定时任务十分简单,按照以往的经验,SpringBoot整合其它技术大致可分为三步:

  • 导坐标
  • 写配置
  • 调接口
  1. 在pom.xml中导入对应坐标

           <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>
    

  2. 在application.yml中写配置

    spring:task:scheduling:pool:size: 1                         # 任务调度线程池大小 默认 1thread-name-prefix: ssm_        # 调度线程名称前缀 默认 scheduling-      shutdown:await-termination: false        # 线程池关闭时等待所有任务完成await-termination-period: 10s   # 调度线程关闭前最大等待时间,确保最后一定关闭
    

    这些配置根据自己的需求设置

  3. 在启动类上使用@EnableScheduling注解打开定时任务开关

    @SpringBootApplication
    //开启定时任务
    @EnableScheduling
    public class Springboot18TaskApplication {public static void main(String[] args) {SpringApplication.run(Springboot18TaskApplication.class, args);}}
    
  4. 在需要开启定时任务的方法上添加@Scheduled注解并设置cron表达式

    @Component
    public class MyTask {@Scheduled(cron = "0/1 * * * * ?")public void run(){System.out.println(Thread.currentThread().getName()+"这是一个定时任务");}
    }

    这里设置的cron代表每秒执行一次

  5. 测试结果


邮箱

​ 发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发学习邮件发送之前先了解3个概念,这些概念规范了邮件操作过程中的标准。

  • SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
  • POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议
  • IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发。

下面演示一下发邮件的过程

  1. 在pom.xml中导入坐标

           <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>
    
  2. 在applicat.yml中写配置

    spring:mail:host: smtp.qq.comusername: ***********@qq.compassword: 从你邮箱中获取
    

    host:配置的是提供邮件服务的主机协议,当前程序仅用于发送邮件,因此配置的是smtp的协议。例如使用163邮箱就换成:host:smtp:163.com

    username:你发送邮箱的邮箱名

    password:这个不是你邮箱密码,而是你邮箱开启smtp时给你的密码

  3. 获取邮箱password

    拿QQ邮箱举例子,在邮箱—设置—账户中开启POP3/SMTP服务即可获取

  4. 编写service接口及其实现类

    1. 发送普通邮箱

      
      public interface SendEmil {public void sendemil();//发送普通邮箱public void sendemilX();//发送多组件邮箱
      }
      public class SendEmilImpl implements SendEmil {@Autowiredprivate JavaMailSender javaMailSender;private String from ="test@qq.com";//发送人的邮箱private String to = "test@qq.com";//接收人的邮箱private String subject = "测试邮件";//邮箱标题private String context = "测试邮件内容";//邮箱正文@Overridepublic void sendemil() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from+"(别名)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}
      

      发送邮件是使用JavaMailSender类的send方法,而邮件主体是通过SimpleMailMessage对象来进行封装

    2. 发送多组件邮箱:包含图片,附件等

      发送简单邮件仅需要提供对应的4个基本信息就可以了,如果想发送复杂的邮件,需要更换邮件对象。使用MimeMessage可以发送特殊的邮件。

          @Overridepublic void sendemilX() {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);//开启添加附件helper.setFrom(from + "(别名)");helper.setTo(to);helper.setSubject(subject);helper.setText(context, true);//添加附件File f1 = new File("这里选择附件的地址");helper.addAttachment(f1.getName(),f1);//添加附件javaMailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}
      

      这里的MimeMessage对象是由javaMailSender的createMimeMessage创建

SpringBoot整合定时任务和Emil发送相关推荐

  1. SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)

    SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊) 目录 SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊) 1.概述 2.最佳实践 2.1创建项目引入依赖(mail) ...

  2. SpringBoot整合Javamail实现邮件发送

    博客主页:踏风彡的博客 博主介绍:一枚在学习的大学生,希望在这里和各位一起学习. 所属专栏:SpringBoot学习笔记 文章创作不易,期待各位朋友的互动,有什么学习问题都可在评论区留言或者私信我,我 ...

  3. springboot整合rocketMQ记录 实现发送普通消息,延时消息

    一.为什么选择RocketMQ消息队列?(可跳过看三的整合代码实例) 首先RocketMQ是阿里巴巴自研出来的,也已开源.其性能和稳定性从双11就能看出来,借用阿里的一句官方介绍:历年双 11 购物狂 ...

  4. SpringBoot --- 整合Ldap

    SpringBoot --- 整合Ldap 1.介绍 2.代码 2.1 pom.xml 2.2 配置文件 2.3 代码 整理不易,不喜勿喷.谢谢 SpringBoot - 整合Ldap. Spring ...

  5. 【七】springboot整合redis(超详细)

    springboot篇章整体栏目: [一]springboot整合swagger(超详细 [二]springboot整合swagger(自定义)(超详细) [三]springboot整合token(超 ...

  6. ActiveMQ入门-ActiveMQ跟SpringBoot整合发送接收Queue

    很多教程中,会介绍原生demo,原生demo在实际开发中不会用到,而且代码量比较大,而且不好理解,也没什么用,所以我们课程不介绍.我们的课程主打实战,所以只会介绍跟SpringBoot整合的方案. 新 ...

  7. Spring Boot定时任务-SpringBoot整合Quartz

    如何通过SpringBoot整合Quartz框架,我们首先去创建一个项目,接下来我们需要在pom文件里添加坐标,我们在使用SpringBoot整合Quartz的时候,需要添加哪些坐标呢,我们来看一下, ...

  8. springboot整合kafka_springboot整合kafka实现消息的发送消费

    如下是springboot整合kafka的一个案例,方便需要的小伙伴. 启动kafka Server cd 到kafka的bin目录下:前提是启动zk./kafka-server-start.sh / ...

  9. 玩转 SpringBoot 2 之整合定时任务篇

    前言 通过本文你将了解到如何在 SpringBoot 2 中整合定时任务使用教程,具体详细内容如下: SpringBoot 自带定时任务使用教程 SpringBoot 集成 JDK 定时任务使用教程 ...

最新文章

  1. Go http源码解析(一)
  2. 新泰成为全国智慧城市时空信息云平台建设试点
  3. SQL中常用的日期计算
  4. Linux练习(write写入)
  5. C#在Linux上的开发指南
  6. python中自带的模块_python中的模块详解
  7. 【LeetCode笔记】128. 最长连续序列(Java、哈希表、动态规划)
  8. 八十九、Java内置函数(常用函数)
  9. 安利个数据库工具dbeaver
  10. [xshell] xshell 及 xftp 官网无法下载解决
  11. Dart 语言基础分步指南
  12. php文字下划线,如何在文字下面添加下划线
  13. 增量式编码器与螺旋微动机构的数显电路
  14. IOS中使用getUserMedia获取视频流展示到video中,进行人脸识别
  15. 【2021-12-22】【Kotlin】Type inference failed. Expected type mismatch: inferred type is HashSet but Set
  16. VUE进阶篇Part9(render函数)
  17. C++17类型std::variant介绍
  18. G4L-硬盘对拷工具
  19. 文献 | 肥胖这种病,心理因素是源头?
  20. 生命不息,折腾不止—小黑升win10

热门文章

  1. python桌面宠物模块_利用python写个桌面挂件 | 手把手带大家做只桌面宠物呗
  2. 如何解决ipad1升级没有响应的问题
  3. 关于mfc 对powerpoint的操作,控制ppt播放
  4. Kubernetes-记录在容器云Galera集群中测试导入数据
  5. myfile.cpp:15:6 warning: ‘val‘ may be used uninitialized in this function [-Wmaybe-uninitialized]
  6. 13.Struts2_动态方法调用(了解)
  7. Python数据分析基础【建模篇】
  8. Linux环境搭建和基础指令介绍
  9. 4g运行内存手机还能用多久_4g运行内存(手机4g与6g运存的利弊)
  10. Android游戏开发之数独课时----2