歡迎您光臨本站 註冊首頁

基於SpringBoot實現定時發送郵件過程解析

←手機掃碼閱讀     wooen @ 2020-06-12 , reply:0

前提:

1.Springboot項目

2.引入maven 依賴

   org.springframework.bootspring-boot-starter-mail

 

以下代碼中涉及到的maven依賴有日誌依賴,但是springboot都有集成,不用重新引入依賴

Application(程序入口)

  package com.springbootemaildemo;    import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;  import org.springframework.scheduling.annotation.EnableScheduling;  import springfox.documentation.swagger2.annotations.EnableSwagger2;  /**   * 引入了一個註解@EnableSwagger2來啟動swagger註解。(啟動該註解使得用在controller中的swagger註解生效, 覆蓋的範圍由@ComponentScan的配置來指定,   * 這裡默認指定為根路徑”com.springboot”下的所有controller)   * 也可以單獨寫衣swaggerConfigura   */  @EnableScheduling //啟動定時任務  @EnableSwagger2 //啟動swagger註解  @SpringBootApplication  public class MailApplication {    public static void main(String[] args) {      SpringApplication.run(MailApplication.class, args);    }  }

 

MailJob(定時任務類)

  package com.springbootemaildemo.job;    import com.springbootemaildemo.send.SendMail;  import com.springbootemaildemo.send.TenSenvenMail;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.scheduling.annotation.EnableScheduling;  import org.springframework.scheduling.annotation.Scheduled;  import org.springframework.stereotype.Component;    import javax.annotation.Resource;    @Component  @EnableScheduling  public class MailJob {    private static final Logger logger = LoggerFactory.getLogger(MailJob.class);      @Resource    SendMail sendMail;      @Resource    TenSenvenMail tenSenvenMail;      //@Scheduled(cron = "0/5 * * * * ?")    //或直接指定時間間隔,例如:100秒    // @Scheduled(fixedRate=100000)    //早晨7點    @Scheduled(cron = "0 0 7 * * ?")    public void sendJob() {      String bodyTen = "早安哇,太陽出來啦,記得開心喲";      String bodyWen = "記得開心喲";      logger.info("定時任務開始..........................");      sendMail.sendWen(bodyWen);      tenSenvenMail.sendTen(bodyTen);      logger.info("定時任務結束..........................");    }  }

 

@EnableScheduling 這個註解是 開啟定時任務。

發送郵件代碼:

發送普通的郵件(發送郵件類):

  package com.springbootemaildemo.send;    import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.stereotype.Component;    import javax.mail.Message;  import javax.mail.MessagingException;  import javax.mail.Session;  import javax.mail.Transport;  import javax.mail.internet.InternetAddress;  import javax.mail.internet.MimeMessage;  import java.util.Date;  import java.util.Properties;      @Component  public class SendMail {    private static final Logger logger = LoggerFactory.getLogger(SendMail.class);      public void sendWen(String body) {      logger.info("開始發送..................");      String from = "212212@qq.com";      String to = "5456456@qq.com";      String subject = "HAPPY";      String smtpHost = "smtp.qq.com";      Properties props = new Properties();      props.setProperty("mail.transport.protocol", "smtp"); // 使用的協議(JavaMail規範要求)      props.setProperty("mail.smtp.host", smtpHost); // 發件人的郵箱的 SMTP服務器地址      props.setProperty("mail.smtp.auth", "true"); // 請求認證,參數名稱與具體實現有關        // 創建Session實例對象      Session session = Session.getDefaultInstance(props);      // 創建MimeMessage實例對象      MimeMessage message = new MimeMessage(session);      // 設置發件人      try {        message.setFrom(new InternetAddress(from));        // 設置收件人        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));        // 設置發送日期        message.setSentDate(new Date());        // 設置郵件主題        message.setSubject(subject);        // 設置純文本內容的郵件正文        message.setText(body);        // 保存並生成最終的郵件內容        message.saveChanges();        // 設置為debug模式, 可以查看詳細的發送 log        session.setDebug(true);        // 獲取Transport對象        Transport transport = session.getTransport("smtp");        // 第2個參數需要填寫的是QQ郵箱的SMTP的授權碼,什麼是授權碼,它又是如何設置?        transport.connect(from, "ipeiquufachheefg");        // 發送,message.getAllRecipients() 獲取到的是在創建郵件對象時添加的所有收件人, 抄送人, 密送人        transport.sendMessage(message, message.getAllRecipients());        logger.info("發送完成");        transport.close();      } catch (MessagingException e) {        e.printStackTrace();      }    }  }

  


[wooen ] 基於SpringBoot實現定時發送郵件過程解析已經有253次圍觀

http://coctec.com/docs/java/show-post-238282.html