最近看到定時任務和郵件發送,閒來無事就嘗試了一下java
須要在pom文件中加入郵件依賴spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
須要進行基本配置安全
password密碼不是登陸密碼,須要到郵箱裏查看受權碼服務器
houst是服務地址我這裏是QQ郵箱因此是QQ服務器函數
spring.mail.properties.mail.smtp.ssl.enable=true開啓安全連接
spring.mail.username=104*******64@qq.com spring.mail.password=vxsefzdipoqybcgd spring.mail.host=smtp.qq.com spring.mail.properties.mail.smtp.ssl.enable=true
兩個註解:
@EnableScheduling、@Scheduled
cron表達式:
字段 容許值 容許的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 , - * /
星期 0-7或SUN-SAT 0,7是SUN , - * ? / L C #
特殊字符 表明含義
, 枚舉
- 區間
* 任意
/ 步長
? 日/星期衝突匹配
L 最後
W 工做日
C 和calendar聯繫後計算過的值
# 星期,4#2,第2個星期四
注入郵件發送器
JavaMailSenderImpl mailSender;
簡單郵件發送
SimpleMailMessage mailMessage = new SimpleMailMessage();
複雜的消息郵件
MimeMessage mimeMessage=mailSender.createMimeMessage();
package com.lty.spring.task.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.io.File; import java.io.UnsupportedEncodingException; @Service public class ScheduleService { @Autowired JavaMailSenderImpl mailSender; //@Scheduled定時任務註解cron是對任務開始的時間進行設置 秒 分 時 日 月 每週的周幾 @Scheduled(cron = "* * * * * *")//每一秒發送一封 public void hello()throws Exception{ String from="104********64@qq.com"; //建立一個複雜的消息郵件 MimeMessage mimeMessage=mailSender.createMimeMessage(); MimeMessageHelper helper=new MimeMessageHelper(mimeMessage, true);//郵件設置 helper.setSubject("開會通知"); helper.setText("<b style='color:red'>今天晚上在大廳開會,請接收到的同志回覆信息。未回覆的將辭退。</b>", true);//如果不寫true則HTML標籤不執行 //收件人的郵箱 helper.setTo("178*******89@qq.com"); //設置自定義發件人暱稱 String nick=""; try { nick=javax.mail.internet.MimeUtility.encodeText("中國電力總局"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
//發件人的地址 helper.setFrom(new InternetAddress(nick+" <"+from+">"));//上傳文件 helper.addAttachment("1.jpg",new File("C:\\Users\\Administrator\\Desktop\\photo\\1.jpg")); helper.addAttachment("2.jpg",new File("C:\\Users\\Administrator\\Desktop\\photo\\2.jpg")); mailSender.send(mimeMessage); } }
在主函數中須要加上@ENableScheduling註解做用是開啓註解的定時任務spring-boot
@EnableScheduling @SpringBootApplication public class Springboot04TaskApplication { public static void main(String[] args) { SpringApplication.run(Springboot04TaskApplication.class, args); } }
建議定時設置不要像我同樣,否則會有不少,雖然能夠一鍵閱讀但仍是有些費事spa