9.使用SpringBoot做定时任务

1.准备工作

在qq邮箱,设置-账户中开启如下图的服务


image.png

开启服务后会收到一个密码,在代码中会有用

2.在POM中添加依赖

   
            org.springframework.boot
            spring-boot-starter-mail
        

3.配置文件

spring.mail.host=smtp.qq.com
[email protected]
spring.mail.password=cfurxoxjlxfpdcch
spring.mail.default-encoding=UTF-8

spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.startls.enable=true
spring.mail.properties.mail.smtp.startls.required=true

那个password用的是你刚刚开启服务时收到的密码

4.写Service接口

public interface MailService {
    void sendMail(String to,String subject,String content);
}
  • to:你要把邮件发给谁
  • subject:主题
  • content:内容

5.写实现类

@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("********");
        mailMessage.setTo(to);
        mailMessage.setSubject(subject);
        mailMessage.setText(content);
        try {
            mailSender.send(mailMessage);
            System.out.println("发送简单邮件");
        }catch (Exception e) {
            System.out.println("发送邮件失败");
        }
    }
}

setFrom括号内填的是你自己的QQ邮箱地址

6.写定时邮件

@Service
public class TaskService {
    @Autowired
    private MailService mailService;
    //cron表达式定时发送这个例子是每天9:59发送邮件
    @Scheduled(cron ="0 59 9 * * ?" )

    public void proces(){
        mailService.sendMail("*******","王洁磊","9点59分发送");
    }
}

在sendMail内分别填上to,subject,content的内容

7.运行主类(注意一定要加@EnableScheduling注解不然会出错)

8.cron表达式

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
按顺序依次为
秒(0~59)
分钟(0~59)
小时(0~23)
天(月)(0~31,但是你需要考虑你月的天数)
月(0~11)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年份(1970-2099)

其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?

0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

你可能感兴趣的:(9.使用SpringBoot做定时任务)