使用SpringBoot中的Schedule定時(shí)發(fā)送郵件的方法
思維導(dǎo)圖

介紹
- 基本概念:定時(shí)任務(wù)從字面不難看出,定時(shí)任務(wù)意思就是定時(shí)處理某種任務(wù)。
- 使用場(chǎng)景:比如說定時(shí)發(fā)送郵件、消息提醒等等。
- 常見的定時(shí)任務(wù):Java.util.TImer、Quartz2、SpringBoot中的Schedule。
本文的主要內(nèi)容以springboot中的Schedule為例,來帶大家看看如何使用其做定時(shí)任務(wù)。
必不可少的注解
@EnableScheduling :用于標(biāo)識(shí)啟動(dòng)類開啟定時(shí)任務(wù)。
@Component :用于標(biāo)識(shí)定時(shí)任務(wù)類,讓Spring掃描其為組件。
@Scheduled :用戶標(biāo)識(shí)在定時(shí)任務(wù)方法上,配置定時(shí)的規(guī)則。
入門案例
啟動(dòng)類添加@EnableScheduling
啟動(dòng)類添加@EnableScheduling負(fù)責(zé)開啟定時(shí)任務(wù)功能。
@SpringBootApplication
@MapperScan("com.shoanjen.redis.mapper")
@EnableScheduling
public class RedisApplication {
public static void main(String[] args) {
SpringApplication.run(RedisApplication.class, args);
}
}定義定時(shí)任務(wù)類
定義定時(shí)任務(wù)類,并標(biāo)注@Component注解。
定義定時(shí)任務(wù)方法并標(biāo)識(shí)@Schduled注解,每隔5秒在控制臺(tái)輸出日志。其中@Schedule參數(shù)如下
| 參數(shù) | 描述 |
|---|---|
cron | 指定一個(gè)Cron表達(dá)式,用于精確控制任務(wù)的執(zhí)行時(shí)間 |
zone | 指定用于解析Cron表達(dá)式的時(shí)區(qū),默認(rèn)為服務(wù)器的默認(rèn)時(shí)區(qū) |
fixedDelay | 指定任務(wù)結(jié)束后的延遲時(shí)間(毫秒),用于控制下一次任務(wù)執(zhí)行的間隔 |
fixedDelayString | 與fixedDelay類似,但可以使用字符串表示延遲時(shí)間 |
fixedRate | 指定任務(wù)開始執(zhí)行后的間隔時(shí)間(毫秒),用于控制連續(xù)任務(wù)之間的間隔 |
fixedRateString | 與fixedRate類似,但可以使用字符串表示間隔時(shí)間 |
initialDelay | 指定任務(wù)首次執(zhí)行前的延遲時(shí)間(毫秒) |
initialDelayString | 與initialDelay類似,但可以使用字符串表示延遲時(shí)間 |
有關(guān)于Cron表達(dá)式的配置可以參考此網(wǎng)址:Cron小工具

@Component
public class ScheduleService {
@Scheduled(fixedRate = 5000)
//@Scheduled(fixedDelay = 5000)
public void scheduleConsole(){
System.out.println("定時(shí)任務(wù)要開始了喲?。。?!");
}
}效果

定時(shí)發(fā)送郵件
引入相關(guān)依賴
<!-- Spring Mail依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>126郵箱配置
1.開啟POP3/SMTP服務(wù)


2.點(diǎn)擊開啟后,會(huì)發(fā)送短信獲取授權(quán)碼,注意要保存授權(quán)碼只顯示一次?。。?!

修改項(xiàng)目配置文件
spring.mail.host=smtp.126.com spring.mail.username=XXXXXX@126.com spring.mail.password=這里就是你剛剛的授權(quán)碼喲!
編寫定時(shí)任務(wù)方法
在這里就舉一個(gè)簡(jiǎn)單的發(fā)送驗(yàn)證碼例子來進(jìn)行演示。下方類中的定時(shí)任務(wù)方法用來 每天21:34定時(shí)向郵件發(fā)送驗(yàn)證碼的功能 。
@Component
public class ScheduleService {
@Autowired
private JavaMailSender mailSender;
@Scheduled(cron = "0 34 21 * * ?")
public void scheduleMailTo(){
SimpleMailMessage message = new SimpleMailMessage();
//隨機(jī)驗(yàn)證碼
Random random=new Random();
int code=random.nextInt(9999)+1;
// 發(fā)件人,配置文件中的郵件地址
message.setFrom("xxxxx@126.com");
// 收件人
message.setTo("xxxxx@163.com");
//設(shè)置郵件標(biāo)題
message.setSubject("注冊(cè)驗(yàn)證碼");
// 郵件內(nèi)容
message.setText("Hello歡迎使用xxx系統(tǒng),您的注冊(cè)驗(yàn)證碼為"+code);
mailSender.send(message);
System.out.println("郵件發(fā)送已完成哦?。?!");
}
}最終效果
最終效果請(qǐng)查看紅框!

寫在最后
有關(guān)于SpringBoot中Schedule定時(shí)任務(wù)的方法到此就結(jié)束啦,希望對(duì)閱讀本文的你們有幫助哦。同時(shí)有疑問可以在評(píng)論區(qū)留言,謝謝大家!
以上就是使用SpringBoot中的Schedule定時(shí)發(fā)送郵件的方法的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Schedule定時(shí)發(fā)送郵件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java如何將BigDecimal類型的值轉(zhuǎn)成double類型
這篇文章主要給大家介紹了關(guān)于Java如何將BigDecimal類型的值轉(zhuǎn)成double類型的相關(guān)資料,需要注意精度損失和范圍限制,使用doubleValue方法進(jìn)行轉(zhuǎn)換,并在高精度計(jì)算時(shí)格外小心,需要的朋友可以參考下2024-12-12
如何使用IntelliJ IDEA的HTTP Client進(jìn)行接口驗(yàn)證
這篇文章主要介紹了如何使用IntelliJ IDEA的HTTP Client進(jìn)行接口驗(yàn)證,本文給大家分享最新完美解決方案,感興趣的朋友跟隨小編一起看看吧2024-06-06
Spring-webflux訪問關(guān)系型數(shù)據(jù)庫實(shí)戰(zhàn)
這篇文章主要為大家介紹了Spring-webflux訪問關(guān)系型數(shù)據(jù)庫實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Springboot項(xiàng)目的搭建教程(分離出common父依賴)
這篇文章主要介紹了Springboot項(xiàng)目的搭建教程(分離出common父依賴),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
聊聊Springboot2.x的session和cookie有效期
這篇文章主要介紹了Springboot2.x的session和cookie有效期,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

