美文网首页
定时发送邮件(定时任务、cron表达式)

定时发送邮件(定时任务、cron表达式)

作者: 黑桃_06ea | 来源:发表于2019-04-17 18:00 被阅读0次

一、

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


    qqyouxiang.png
  • pom.xml中添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  • 配置application.properties
spring.mail.host=smtp.qq.com
spring.mail.username=623878638@qq.com
spring.mail.password=tnvargwcssxpbegf
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接口
package com.soft1721.jianyue.api.service;

/**
 * Created by wj on 2019/4/15.
 */
public interface MailService {
    /**
     * 发送简单邮件
     */
    void sendMail(String to,String subject,String content);
}
  • 实现接口ServiceImpl
import com.soft1721.jianyue.api.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
/**
 * Created by wj on 2019/4/15.
 */
@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("623878638@qq.com");//发起者
        mailMessage.setTo(to);//接受者
        mailMessage.setSubject(subject);
        mailMessage.setText(content);
        try {
            mailSender.send(mailMessage);
            System.out.println("发送简单邮件");
        }catch (Exception e){
            System.out.println("发送简单邮件失败");
        }
    }
}
  • 写定时任务:10:00准时发送一份电子邮件
import com.soft1721.jianyue.api.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
/**
 * Created by wj on 2019/4/15.
 */
@Service
//@Async
public class TaskService {
    @Autowired
    private MailService mailService;
    @Scheduled(cron = "0 0 10 * * ?")
    public void proces(){
        mailService.sendMail("*********@qq.com","title","定时10:00发送");
        System.out.println("111");
    }
}
  • 运行Application

二、

  • cron表达式
    1、Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:

Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek

2、每一个域可出现的字符如下:

Seconds:可出现", - * /"四个字符,有效范围为0-59的整数
Minutes:可出现", - * /"四个字符,有效范围为0-59的整数
Hours:可出现", - * /"四个字符,有效范围为0-23的整数
DayofMonth:可出现", - * / ? L W C"八个字符,有效范围为0-31的整数
Month:可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc
DayofWeek:可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year:可出现", - * /"四个字符,有效范围为1970-2099年

3、一个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)

3、列举几个:

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

相关文章

  • 定时发送邮件(定时任务、cron表达式)

    一、 首先配置QQ邮箱->设置->账户->开启服务POP3/SMTP开启->获取授权码qqyouxiang.png...

  • springboot使用定时器

    使用定时器 开启定时任务功能 配置定时任务 任务执行规则 @Scheduled注解: cron:指定cron表达式...

  • SpringBoot使用定时任务

    手动装配定时任务组件 编写定时任务 编写cron表达式指定定时任务规则推荐一个非常友好的网站http://cron...

  • cron 表达式的使用

    定时任务中 cron 表达式的使用 在线生成 cron 表达式http://cron.qqe2.com/

  • Spring Boot定时任务

    1.Scheduled定时任务器2.整合Quartz定时任务框架3.cron表达式 1.Scheduled定时任务...

  • java web 记录

    定时任务 SpringBoot scheduling 使用方式,原理 Cron表达式 cron每位符号代表意思:*...

  • cron表达式

    在项目使用定时任务时,一定会使用cron表达式,如何写出正确的cron表达式对于定时任务的正常执行至关重要。我们可...

  • Cron表达式

    Cron表达式 用SpringBoot定义定时任务时, 用到了 cron表达式 ,然后在此详细了解一下cron表达...

  • Cron表达式

    Cron表达式 用SpringBoot定义定时任务时, 用到了 cron表达式 ,然后在此详细了解一下cron表达...

  • systemd定时器代替cron定时任务

    平时笔者使用cron来完成定时任务,systemd 的定时器也可以完成cron定时任务,而且相对于cron,功...

网友评论

      本文标题:定时发送邮件(定时任务、cron表达式)

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