Java实现定时发送邮件(基于Springboot工程)
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 {
@Autowired
private 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/
这个网站可以自定义设置执行的时间,网站中还提供了大量的现成案例。