欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

SpringBoot整合定时任务和Emil发送

发布时间:2024/1/1 javascript 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 SpringBoot整合定时任务和Emil发送 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

SpringBoot整合定时任务和Emil发送

定时任务

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

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

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

  • 在application.yml中写配置

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

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

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

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

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

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

  • 测试结果


  • 邮箱

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

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

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

  • 在pom.xml中导入坐标

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

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

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

    username:你发送邮箱的邮箱名

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

  • 获取邮箱password

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

  • 编写service接口及其实现类

  • 发送普通邮箱

    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对象来进行封装

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

    发送简单邮件仅需要提供对应的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发送的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。