日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot整合定时任务和Emil发送

發布時間:2024/1/1 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot整合定时任务和Emil发送 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringBoot整合定時任務和Emil發送

定時任務

? 任務系統指的是定時任務。定時任務是企業級開發中必不可少的組成部分,諸如長周期業務數據的計算,例如年度報表,諸如系統臟數據的處理,再比如系統性能監控報告,還有搶購類活動的商品上架,這些都離不開定時任務。在SpringBoot中使用定時任務十分簡單,按照以往的經驗,SpringBoot整合其它技術大致可分為三步:

  • 導坐標
  • 寫配置
  • 調接口
  • 在pom.xml中導入對應坐標

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>

    ?

  • 在application.yml中寫配置

    spring:task:scheduling:pool:size: 1 # 任務調度線程池大小 默認 1thread-name-prefix: ssm_ # 調度線程名稱前綴 默認 scheduling- shutdown:await-termination: false # 線程池關閉時等待所有任務完成await-termination-period: 10s # 調度線程關閉前最大等待時間,確保最后一定關閉

    這些配置根據自己的需求設置

  • 在啟動類上使用@EnableScheduling注解打開定時任務開關

    @SpringBootApplication //開啟定時任務 @EnableScheduling public class Springboot18TaskApplication {public static void main(String[] args) {SpringApplication.run(Springboot18TaskApplication.class, args);}}
  • 在需要開啟定時任務的方法上添加@Scheduled注解并設置cron表達式

    @Component public class MyTask {@Scheduled(cron = "0/1 * * * * ?")public void run(){System.out.println(Thread.currentThread().getName()+"這是一個定時任務");} }

    這里設置的cron代表每秒執行一次

  • 測試結果


  • 郵箱

    ? 發郵件是java程序的基本操作,springboot整合javamail其實就是簡化開發學習郵件發送之前先了解3個概念,這些概念規范了郵件操作過程中的標準。

    • SMTP(Simple Mail Transfer Protocol):簡單郵件傳輸協議,用于發送電子郵件的傳輸協議
    • POP3(Post Office Protocol - Version 3):用于接收電子郵件的標準協議
    • IMAP(Internet Mail Access Protocol):互聯網消息協議,是POP3的替代協議發郵件是java程序的基本操作,springboot整合javamail其實就是簡化開發。

    下面演示一下發郵件的過程

  • 在pom.xml中導入坐標

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>
  • 在applicat.yml中寫配置

    spring:mail:host: smtp.qq.comusername: ***********@qq.compassword: 從你郵箱中獲取

    host:配置的是提供郵件服務的主機協議,當前程序僅用于發送郵件,因此配置的是smtp的協議。例如使用163郵箱就換成:host:smtp:163.com

    username:你發送郵箱的郵箱名

    password:這個不是你郵箱密碼,而是你郵箱開啟smtp時給你的密碼

  • 獲取郵箱password

    拿QQ郵箱舉例子,在郵箱—設置—賬戶中開啟POP3/SMTP服務即可獲取

  • 編寫service接口及其實現類

  • 發送普通郵箱

    public interface SendEmil {public void sendemil();//發送普通郵箱public void sendemilX();//發送多組件郵箱 } public class SendEmilImpl implements SendEmil {@Autowiredprivate JavaMailSender javaMailSender;private String from ="test@qq.com";//發送人的郵箱private String to = "test@qq.com";//接收人的郵箱private String subject = "測試郵件";//郵箱標題private String context = "測試郵件內容";//郵箱正文@Overridepublic void sendemil() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from+"(別名)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}

    發送郵件是使用JavaMailSender類的send方法,而郵件主體是通過SimpleMailMessage對象來進行封裝

  • 發送多組件郵箱:包含圖片,附件等

    發送簡單郵件僅需要提供對應的4個基本信息就可以了,如果想發送復雜的郵件,需要更換郵件對象。使用MimeMessage可以發送特殊的郵件。

    @Overridepublic void sendemilX() {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);//開啟添加附件helper.setFrom(from + "(別名)");helper.setTo(to);helper.setSubject(subject);helper.setText(context, true);//添加附件File f1 = new File("這里選擇附件的地址");helper.addAttachment(f1.getName(),f1);//添加附件javaMailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}

    這里的MimeMessage對象是由javaMailSender的createMimeMessage創建

  • 總結

    以上是生活随笔為你收集整理的SpringBoot整合定时任务和Emil发送的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。