springboot 定時器設置,自動推送郵件

構建定時器

配置文件

@Configurable      --定時器需要的註解
@EnableScheduling  --定時器需要的註解
@RestController   --包含component
@RequestMapping("/report")
public class ExcelReportToolTime {

定時器簡易代碼

/**
   * 直接指定時間間隔,例如:每天15:09
   * "0 10 0 1 * ?"  每月1號的0:10:00執行
   * "0 15 10 L * ?" 每月最後一日的上午10:15觸發
   */
  @Scheduled(cron = "0 13 17 * * ?")
  private void configureTasks() {
    log.info("輸出報表數據,執行靜態定時任務時間:{}", LocalDateTime.now());
    mainExport();
    //發送郵件
    sendMailAttach();
  }

調用郵件發送

private void sendMailAttach(){
    String to="[email protected]";
    String subject="subject";
    String content="2020月份優惠券統計日報,請查收";
    String filePath=FourthFile;
    //SendMailUtil sendMailUtil = new SendMailUtil();
    sendMailUtil.sendAttachmentMail(to,subject,content,filePath);
  }

發送郵件

配置文件

<!-- 郵件 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-mail</artifactId>
			<version>2.2.6.RELEASE</version>
		</dependency>

配置文件(yml 換個寫法)

# JavaMailSender 郵件發送的配置
spring.mail.host=smtp.qq.com
spring.mail.username=xxx@qq.com
#QQ郵箱的授權碼(搜索查看設置授權碼)
spring.mail.password=eyxyocwjamvlbeen
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.default-encoding=UTF-8

設置郵件發送幫助類

package com.xxx.mmcs.tool.execl.util;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 * @author xxx
 */
@Slf4j
@Service
@Component  --Component默認是單例的加載,對應@Autowired使用,不然null
public class SendMailUtil{

  @Autowired
  private JavaMailSender mailSender;

  @Value("${spring.mail.username}")
  private String from;

  public void sendSimpleMail(String to, String subject, String content) {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(from);
    message.setTo(to);
    message.setSubject(subject);
    message.setText(content);
    try{
      mailSender.send(message);
      log.info("send mail message:{}", message);
      log.info("success");
    }catch (Exception e){
      log.info("fail"+e);
    }
  }

  public void sendHtmlMail(String to, String subject, String content) {
    MimeMessage message = mailSender.createMimeMessage();
    try {
      //true表示需要創建一個multipart message
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(from);
      helper.setTo(to);
      helper.setSubject(subject);
      helper.setText(content, true);
      mailSender.send(message);
      log.info("html郵件發送成功");
    } catch (MessagingException e) {
      log.info("發送html郵件時發生異常!"+e);
    }
  }

  public void sendAttachmentMail(String to, String subject, String content, String filePath) {
    MimeMessage message = mailSender.createMimeMessage();
    try {
      MimeMessageHelper helper = new MimeMessageHelper(message, true);
      helper.setFrom(from);
      helper.setTo(to);
      helper.setSubject(subject);
      helper.setText(content, true);

      FileSystemResource file = new FileSystemResource(new File(filePath));
      //File.separator="\"
      String separator="/";
      String fileName = filePath.substring(filePath.lastIndexOf(separator));

      helper.addAttachment(fileName, file);

      mailSender.send(message);
      log.info("帶附件的郵件已經發送。");
    } catch (MessagingException e) {
      log.info("發送帶附件的郵件時發生異常!"+e);
    }
  }
}

輔助springboot excel操作,後面持續更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章