SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)
目录
- SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)
- 1.概述
- 2.最佳实践
- 2.1创建项目引入依赖(mail)
- 2.2 修改yml配置文件
- 2.3 启动类添加@EnableScheduling注解
- 2.4 执行的任务类(发送基本内容)
我们使用java程序发送邮件
,属于使用第三方客户端发送邮件
使用第三方客户端发送邮件也需要先通过认证(登录):
官方客户端认证: 用户名 密码
第三方客户端的认证:用户名 授权码
授权码需要通过发送短信开通指定功能时获取
1.概述
SpringBoot实现邮件功能是非常的方便快捷的,因为SpringBoot默认有starter
实现了Mail。
发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。
最早期的时候我们会使用JavaMail
相关api来写发送邮件的相关代码,后来spring推出了JavaMailSender
更加简化了邮件发送的过程,在之后springboot对此进行了封装就有了现在的spring-boot-starter-mail。
2.最佳实践
先去qq邮箱设置smtp开启,并获得授权码
邮箱->设置->账户->POP3/SMTP服务:开启服务后会获得授权码
2.1创建项目引入依赖(mail)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.2 修改yml配置文件
spring:
mail:
host: smtp.qq.com #配置服务器qq:smtp.qq.com,网易163:smtp.163.com
password: cvaflkvougrvcijd #授权码,邮箱->设置->账户->POP3/SMTP服务:开启服务后会获得权码
username: 3541434135@qq.com
default-encoding: UTF-8
2.3 启动类添加@EnableScheduling注解
package com.bjopwernode;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@SpringBootApplication
public class SpringbootTimedtaskMixMailsendingApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootTimedtaskMixMailsendingApplication.class, args);
}
}
2.4 执行的任务类(发送基本内容)
在基础包下新建一个task目录,里面新建一个类MyTask.java
package com.bjopwernode.task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class MyTask {
@Autowired
private JavaMailSender javaMailSender;
/**
* 发送基本内容
*/
@Scheduled(cron = "0/3 * * * * ?")
public void testSendSimpleMailMessage(){
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
//发件人邮箱
simpleMailMessage.setFrom("3541434135@qq.com");
//收件人邮箱
simpleMailMessage.setTo("601081254@qq.com");
//邮件主题
simpleMailMessage.setSubject("这是一个测试邮件");
//邮件内容
simpleMailMessage.setText("测试内容");
javaMailSender.send(simpleMailMessage);
}
}