美文网首页
day09 基于spring的定时任务发送邮件

day09 基于spring的定时任务发送邮件

作者: 山下_26 | 来源:发表于2019-04-18 08:54 被阅读0次

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

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

    2.使用spring task发送定时邮件

    需要用到的maven依赖
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.6</version>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>
    
    application.properties配置
    ##qq邮箱配置
    spring.mail.host=smtp.qq.com
    spring.mail.username=xxxxxxxxxx@qq.com
    spring.mail.password=授权码
    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
    
    MailService接口
    public interface MailService {
        /**
         * 发送简单邮件
         */
        void sendMail(String to,String subject,String content);
    }
    
    
    MailServiceImpl
    @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("xxx");//发起者
            mailMessage.setTo("xxx");//接收者
            mailMessage.setSubject("定时邮件测试");
            mailMessage.setText("这是一个定时邮件测试");
            try {
                mailSender.send(mailMessage);
                System.out.println("发送简单邮件");
            }catch (Exception e){
                System.out.println("发送简单邮件失败");
            }
        }
    
    }
    
    TaskService
    @Service
    public class TaskService {
        @Autowired
        private MailService mailService;
    
         //cron时间表达式
        @Scheduled(cron = "0 8 10 ? * *")
        public void proces(){
            mailService.sendMail("xxx","定时邮件测试","这是一个定时邮件测试");
            System.out.println("success");
        }
    }
    

    相关文章

      网友评论

          本文标题:day09 基于spring的定时任务发送邮件

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