pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/Software.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/schedule/SoftwareMailSchedule.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/SoftwareService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/util/MailUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/config/application-dev.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/config/application-prod.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
pom.xml
@@ -33,7 +33,10 @@ <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <!--<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> src/main/java/com/whyc/pojo/Software.java
@@ -38,4 +38,7 @@ private Date createTime; private Integer mailSt; private Date sendTime; } src/main/java/com/whyc/schedule/SoftwareMailSchedule.java
New file @@ -0,0 +1,55 @@ package com.whyc.schedule; import com.whyc.factory.ThreadPoolExecutorFactory; import com.whyc.pojo.Software; import com.whyc.service.SoftwareService; import com.whyc.util.DateUtil; import com.whyc.util.MailUtil; import com.whyc.util.ThreadLocalUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.mail.MessagingException; import java.util.Arrays; import java.util.List; /** * 软件升级申请邮件推送定时任务 */ @EnableScheduling @Component public class SoftwareMailSchedule { @Autowired private MailUtil mailUtil; @Autowired private SoftwareService softwareService; /**数据4秒钟获取一次*/ @Scheduled(cron = "0/4 * * * * ? ") public void sendMail(){ //查询需要发送邮件 List<Software> list = softwareService.getSendList(); String[] toArrStr = new String[]{"perryhsu@163.com"}; List toArr = Arrays.asList(toArrStr); for (int i = 0; i < list.size(); i++){ Software software = list.get(i); ThreadPoolExecutorFactory.getPoolExecutor().execute(() -> { // 发送邮件 try { mailUtil.sendMailBatch(toArr, "长城汽车-电池系统软件升级申请", "SN码:"+software.getSnCode()+"\n软件序列号:"+software.getSerialNumber()+"\n版本:"+software.getVersion()+"\n申请时间:"+ ThreadLocalUtil.format(software.getCreateTime(),1)); //更新邮件发送状态 softwareService.updateMailStatus(software.getId()); } catch (MessagingException e) { throw new RuntimeException(e); } }); } } } src/main/java/com/whyc/service/SoftwareService.java
@@ -98,4 +98,18 @@ List<String> materialCodeList = mapper.selectList(query).stream().map(Software::getMaterialCode).collect(Collectors.toList()); return new Response().set(1, materialCodeList); } public List<Software> getSendList() { QueryWrapper<Software> query = Wrappers.query(); query.eq("mail_st", 0); return mapper.selectList(query); } public void updateMailStatus(Integer id) { Software software = new Software(); software.setMailSt(1); software.setSendTime(new Date()); software.setId(id); mapper.updateById(software); } } src/main/java/com/whyc/util/MailUtil.java
New file @@ -0,0 +1,116 @@ package com.whyc.util; 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 javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; import java.util.List; @Component public class MailUtil { @Value("${spring.mail.username}") String from; @Autowired JavaMailSender mailSender; //简单邮件 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); System.out.println("简单邮件发送成功!"); } catch (Exception e){ System.out.println("发送简单邮件时发生异常!"+e); } } //简单邮件 public void sendMailBatch(List<String> toList, String subject, String content) throws MessagingException { if(toList.isEmpty()){ return; } MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message,false); helper.setFrom(from); //发件人 String[] toArr = toList.toArray(new String[toList.size()]); helper.setTo(toArr);//收件人 helper.setSubject(subject); //标题 helper.setText("邮件来自电池-长城汽车平台,内容为:\n"+content); //文件内容 mailSender.send(message); } //html格式邮件 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); System.out.println("html邮件发送成功!"); } catch (MessagingException e) { System.out.println("发送html邮件时发生异常!"+e); } } //带附件的邮件 public void sendAttachmentsMail(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)); String fileName = filePath.substring(filePath.lastIndexOf(File.separator)); helper.addAttachment(fileName, file); mailSender.send(message); System.out.println("带附件的邮件已经发送。"); } catch (MessagingException e) { System.out.println("发送带附件的邮件时发生异常!" + e); } } //带静态资源的邮件 public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){ 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 res = new FileSystemResource(new File(rscPath)); helper.addInline(rscId, res); mailSender.send(message); System.out.println("嵌入静态资源的邮件已经发送。"); } catch (MessagingException e) { System.out.println("发送嵌入静态资源的邮件时发生异常!" + e); } } } src/main/resources/config/application-dev.yml
@@ -37,6 +37,12 @@ max-request-size: 200MB messages: basename: i18n/message mail: host: smtp.163.com port: username: whyc_doc@163.com password: JAMKMEQUOAGGMSVV default-encoding: UTF-8 jasypt: encryptor: #password: 9Lu6HgEvttjj8vYhy3ID+PqPbumuXhcH src/main/resources/config/application-prod.yml
@@ -34,6 +34,12 @@ max-request-size: 200MB messages: basename: i18n/message mail: host: smtp.163.com port: username: whyc_doc@163.com password: JAMKMEQUOAGGMSVV default-encoding: UTF-8 jasypt: encryptor: algorithm: PBEWithMD5AndDES