定時發送郵件

最近看到定時任務和郵件發送,閒來無事就嘗試了一下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

相關文章
相關標籤/搜索