> Java > java지도 시간 > SpringBoot에서 예약된 작업과 이메일 작업을 통합하는 방법

SpringBoot에서 예약된 작업과 이메일 작업을 통합하는 방법

PHPz
풀어 주다: 2023-05-23 09:16:05
앞으로
724명이 탐색했습니다.

定时任务

项目开发中经常需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息。Spring为我们提供了异步执行任务调度的方式

提供 :

  • TaskExecutor 任务调度这

  • TaskScheduler 任务执行者 两个注解:

  • @EnableScheduling// 开启定时任务功能

@Scheduled //表示什么时候执行

cron表达式:

字段 允许值 允许的特殊字符
秒 0-59 - * /
分 0-59 - * /
小时 0-23 - * /
日期 1-12或JAN-DEC - * ? / L W C 月份 0-59 - * /
星期 1-7或SUN-SAT - * ? / L C #

cron表达式例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

 (0)0/20 * * * * ?   表示每20秒 调整任务

 

 (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触发

로그인 후 복사

测试

1

2

3

4

5

6

7

8

9

10

@Service

public class task {

 

 

    // 秒  分 时 日 月 周几

    @Scheduled(cron = "0 17 18 * * ?")

    public void test(){

        System.out.println("这个是定时任务,现在的时间是:"+new Date());

    }

}

로그인 후 복사

邮件任务

邮件发送需要引入spring-boot-starter-mail

1

2

3

4

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-mail</artifactId>

        </dependency>

로그인 후 복사

定义MailProperties内容,配置在application.yml中

1

2

3

4

5

6

7

spring.mail.username=wangmeng@XXX.com

spring.mail.password=EXHFOVQXOTZUKWSL

spring.mail.host=smtp.163.com

 

 

#开启加密验证

spring.mail.properties.mail.smtp.ssl.enable=true

로그인 후 복사

测试邮件发送

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

    @Autowired

    private JavaMailSenderImpl javaMailSender;

    @Test

    void contextLoads() {

        SimpleMailMessage simpleMailMessage=new SimpleMailMessage();

 

        simpleMailMessage.setSubject("这是SpringBoot集成mail,发送的第一个邮件");

 

        simpleMailMessage.setText("你好,你好,你好,你好!");

        simpleMailMessage.setTo("mengwangq@XXXX.com","jhwucc@XXX.com");

        simpleMailMessage.setFrom("wangmeng@XXX.com");

 

        javaMailSender.send(simpleMailMessage);

    }

 

    @Test

    void Test() throws Exception {

        MimeMessage mimeMessage =

                javaMailSender.createMimeMessage();

        MimeMessageHelper helperMessage = new MimeMessageHelper(mimeMessage, true,"utf-8");

        helperMessage.setSubject("今日工作进展");

        helperMessage.setText("<p style=&#39;color:red&#39;>今日工作汇报,详情请查看附件</p>");

 

        // 附件

        helperMessage.addAttachment("今日工作进展.docx"new File("D:\\usr\\local\\工作日报.docx"));

 

 

 

        helperMessage.setTo("mengwangq@XXXX.com");

        helperMessage.setFrom("wangmeng@XXXXX.com");

 

 

        javaMailSender.send(mimeMessage);

    }

로그인 후 복사

위 내용은 SpringBoot에서 예약된 작업과 이메일 작업을 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿