1、功能概述?
1、在企业中有很多需要定时提醒的任务:如每天下午四点钟给第二天的值班人员发送值班消息?如提前一天给参与第二天会议的人员发送参会消息等。
2、这种定时提醒有很多方式如短信提醒、站内提醒等邮件提醒是其中较为方便且廉价的方式。
3、本案例中主要使用基于Springboot工程和JavaMail技术及spring中的定时任务实现,当前这里的定时任务也可以换成分布式的定时任务如quartz等,本案例中不在此阐述。
2、定时邮件任务具体实现过程?
2.1、创建springboot工程导入相关jar包信息
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.9</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.hazq</groupId><artifactId>hazqoasystem</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>hazqoasystem</name><description>hazqoasystem</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
2.2、在application.yml文件中添加配置信息
host:表使用的邮件服务器,我们这里选择使用的是qq的邮件服务器。
username:你想通过那个邮箱作为主体向其他邮箱发送邮件。
password:这个密码不是登录密码,而是授权码。
&:password授权码获取方式
【第一步:登录qq邮箱,点击设置】
【第二步:点击账号,开启服务】
【第三步:通过微信扫描,发送短信】
【第四步:开启服务成功】
红框的位置就是我们需要的password
2.3、创建定时任务发送邮件
@Slf4j
//加载类型开启类中,加载启动类上,开启整个项目
@EnableScheduling //是否开启
@Component
public class DutyScheduledConfig {@Autowiredprivate JavaMailSender javaMailSender;//邮件发送引擎@Value("${spring.mail.username}")private String setFromEmail;//每天下午16:30分发送邮件消息。@Scheduled(cron="0 30 16 * * ?")public void process(){SimpleMailMessage message = new SimpleMailMessage();message.setFrom(setFromEmail);message.setTo(“123456@qq.com”);//你想发邮件给谁。message.setSubject("值班通知");//设置邮件主题message.setText("这里写的是邮件的内容。");javaMailSender.send(message);System.out.print(“邮件发送成功!”);}
}
24、其他定时公式
https://cron.qqe2.com/
这个网站可以自定义设置执行的时间,网站中还提供了大量的现成案例。