一、版本
Spring Boot 2.2.2RELEASE
二、依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
三、主启动类
加上开启定时任务和异步的注解
@EnableScheduling
@EnableAsync
四、邮件
登录QQ邮箱,设置->账户,开启smtp服务
保存好自己的授权码
五、配置
配置文件
# 服务端口
server.port=8089
# 服务名称
spring.application.name=testEmail
# 访问前缀
server.servlet.context-path=/
all.cron=0 2 0-9 * * ?
# 邮件配置
spring.mail.username=(自己的邮箱xxx@qq.com)
spring.mail.password=(自己的授权码)
spring.mail.host=smtp.qq.com
spring.mail.properties.mail.smtp.ssl.enable=true
# 日志文件
logging.file.name=${spring.application.name}${server.port}.log
六、代码
SendEmail.java
package test.email.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;
@Service
public class SendEmail {
@Value("${spring.mail.username}")
private String fromEmail;
@Autowired
private JavaMailSenderImpl javaMailSender;
public void sendEmail(String email) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setSubject("提示!");
simpleMailMessage.setText("内容!");
simpleMailMessage.setFrom(fromEmail);
simpleMailMessage.setTo(email);
javaMailSender.send(simpleMailMessage);
}
}
TestTask.java
package test.email.task;
import test.email.service.SendEmail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TestTask {
@Autowired
private SendEmail sendEmail;
// 发送邮件
@Async
@Scheduled(cron = "${all.cron}")
public void caoWeiReport() {
sendEmail.sendEmail("发送给谁的邮箱");
}
}