美文网首页ssh
Day 14 定时任务 以定时邮件为例

Day 14 定时任务 以定时邮件为例

作者: 忆曦雪_ | 来源:发表于2019-04-15 20:35 被阅读14次

SpringBoot定时任务实现的几种方式:

  • Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。
  • ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。
  • Spring Task:Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。
  • Quartz:这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。
    详情Demo请参考:http://www.wanqhblog.top/2018/02/01/SpringBootTaskSchedule/

使用定时任务发送一封定时邮件

1、简单邮件

  • 首先进入QQ邮箱->设置->账户->开启服务POP3/SMTP开启->获取授权码


    获取授权码
    复制保存授权码
  • 添加pom依赖
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  • 配置application.properties
spring.mail.host=smtp.qq.com
spring.mail.username=xxxx@qq.com(修改为自己的qq邮箱)
spring.mail.password=xxxxx(粘贴刚刚复制的授权码)
spring.mail.default-encoding=UTF-8


##如果不加下面3句,会报530错误
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
  • 写Service接口
public interface MailService {
    /**
     * 发送简单邮件
     */
    void sendMail(String to,String subject,String content);
}
  • 实现接口
@Service("mailService")
public class MailServiceImpl implements MailService {
    @Autowired
    private JavaMailSender mailSender;

    @Override
    public void sendMail(String to, String subject, String content) {
        SimpleMailMessage mailMessage=new SimpleMailMessage();
        mailMessage.setFrom("xxxxx@qq.com");//发起者
        mailMessage.setTo(to);//接受者
        mailMessage.setSubject(subject);
        mailMessage.setText(content);
        try {
            mailSender.send(mailMessage);
            System.out.println("发送简单邮件");
        }catch (Exception e){
            System.out.println("发送简单邮件失败");
        }
    }


    }
  • 写定时任务
@Service
//@Async
public class TaskService {
    @Autowired
    private MailService mailService;
    
//在4月15号20点23发送定时邮件
   @Scheduled(cron = "0 23 20 15 4 ? ")
    public void proces(){
        mailService.sendMail("xxxx@qq.com","这是一封简单邮件","您好!");
        System.out.println("发送成功");
    }
  }
  • 在主类添加@EnableScheduling,不添加不能进行运行
  • 发送成功


    发送成功
    查看控制台

    2、带附件的邮件

  • 使用MimeMessage来设置复杂一些的邮件内容
 @Override
    public void sendMail(String to, String subject, String content) throws MessagingException {
       /* SimpleMailMessage mailMessage=new SimpleMailMessage();*/
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper mailMessage = new MimeMessageHelper(mimeMessage, true);
        mailMessage.setFrom("2547241647@qq.com");//发起者
        mailMessage.setTo(to);//接受者
        mailMessage.setSubject(subject);
        mailMessage.setText(content);
        FileSystemResource file = new FileSystemResource(new File("D://city.jpg"));
        mailMessage.addAttachment("附件-1.jpg", file);

        mailSender.send(mimeMessage);
       /* try {
            mailSender.send(mailMessage);
            System.out.println("发送邮件成功");
        }catch (Exception e){
            System.out.println("发送邮件失败");
        }*/
    }
  • 发送成功


    1
    2

cron表达式详解

参考文章:https://www.cnblogs.com/linjiqin/archive/2013/07/08/3178452.html

相关文章

  • Day 14 定时任务 以定时邮件为例

    SpringBoot定时任务实现的几种方式: Timer:这是java自带的java.util.Timer类,这个...

  • springboot 任务

    邮件任务 添加依赖 进行邮件配置 测试 定时任务: ==@EnableScheduling== 开启定时任务注解...

  • 2019-07-31定时任务

    定时任务 定时任务实现方法 系统默认定时任务 用户自定义设置定时任务 定时任务配置文件 定时任务启动 定时任务样例...

  • 远程仓库配置

    钉钉定时任务发邮件

  • 拥抱Kubernetes,再见了,SpringBoot cron

    项目开发中总是需要执行一些定时任务,比如定时处理数据之后发送邮件,定时更新缓存等等。 Java定时任务 基于 ja...

  • SpringSchedual多线程执行

    前言 Spring提供了定时任务的实现。以SpringBoot为例,在主运行类上添加@EnableScheduli...

  • 2019-07-30

    day22 操作系统定时任务 课程介绍 1.定时任务概念介绍2.定时任务实现方式3.定时任务配置应用过程4.定时...

  • springboot 之 “定时任务-动态修改表达式”

    >>>我的博客<<< 定时任务主要用于定时发送邮件、夜间自动维护等。(1)开启定时任务功能 或者在运行类TaskA...

  • 分布式定时任务调度框架

    一、前言 在开发中会有定时任务的场景需要用到定时任务,如订单超时需要自动取消订单、数据需定时备份、定时短信邮件的发...

  • 分布式定时调度-xxl-job

    一、定时任务概述 1.1 定时任务认识 1.1.1 什么是定时任务 定时任务是按照指定时间周期运行任务。使用场景为...

网友评论

    本文标题:Day 14 定时任务 以定时邮件为例

    本文链接:https://www.haomeiwen.com/subject/kdipwqtx.html