javascript
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发送的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html中text的maxlength,
- 下一篇: gradle idea java ssm