当前位置: 首页 > news >正文

基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能

概述

本例子基于springboot实现了后台定时统计数据报表并将数据生成excel文件作为附件,然后通过邮件发送通知的功能。

详细

一、准备工作

 1、首先注册两个邮箱,一个发送邮箱,一个接收邮箱。

 2、发送邮箱开启IMAP/SMTP/POP3服务,记录得到的授权码

1.png

二、项目结构及具体实现

1、项目结构

0.png

2、实现代码

配置文件:

server:port: 8088spring:mail:host: smtp.163.comport:username: demodashi2021002@163.compassword: WGWRIGYQSCPGBJCCprotocol: smtptest-connection: truedefault-encoding: UTF-8
email:temp: C:/email/receiver: demodashi2021001@163.com

邮件服务接口:实现邮件发送功能。

/*** 发送带附件的邮件** @param receiver 收件人地址* @param subject  邮件主题* @param content  邮件内容* @param filePath 附件地址* @param cc       抄送地址* @throws MessagingException 邮件发送异常*/
@Override
public void sendAttachmentsMail(String receiver, String subject, String content, String filePath, String... cc) throws MessagingException {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(sender);helper.setTo(receiver);helper.setSubject(subject);helper.setText(content, true);if (ArrayUtil.isNotEmpty(cc)) {helper.setCc(cc);}FileSystemResource file = new FileSystemResource(new File(filePath));String fileName = filePath.substring(filePath.lastIndexOf(File.separator)+1);helper.addAttachment(fileName, file);mailSender.send(message);
}

定时发送任务:本地测试设置每十秒运行一次定时任务。

@Scheduled(cron = "10/20 * * ? * ?")
private void sendEventEmailTask() {LOGGER.info("=========启动邮件发送任务=============");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String startTime = getPastDate(7) + " 00:00:00";String endTime = sdf.format(new Date()) + " 23:59:59";String subject = "最近一周的数据";this.emailJob(startTime, endTime,subject);LOGGER.info("=========结束邮件发送任务=============");
}

三、演示效果

运行项目后等待十秒,查看日志:

3.png

查看接收邮箱:

4.png

附件:

5.png

http://www.lryc.cn/news/157719.html

相关文章:

  • opencv 提取选中区域内指定hsv颜色的水印
  • 如何理解张量、张量索引、切片、张量维度变换
  • 基于SpringBoot的汽车租赁系统
  • 怎么做手机App测试?app测试详细流程和方法介绍
  • 【计算机网络】网络编程接口 Socket API 解读(1)
  • IGES在线查看与转换
  • 【Vue3-Vite】Vite配置--路径别名配置
  • 道可云元宇宙每日资讯|第二届世界元宇宙大会将在嘉定安亭举行
  • Python for 循环语句
  • iOS脱壳之frida-ios-dump
  • rust中的reborrow和NLL
  • Java设计模式:一、六大设计原则-04:迪米特法则
  • 使用docker部署pg数据库
  • Json“牵手”亚马逊商品详情数据方法,亚马逊商品详情API接口,亚马逊API申请指南
  • springboot封装查询快递物流
  • 从C语言到C++_37(特殊类设计和C++类型转换)单例模式
  • go 使用systray 实现托盘和程序退出
  • Electron之单例+多窗口
  • A Survey of Knowledge-Enhanced Pre-trained Language Models
  • 动态规划(选择)
  • IIS WebDAV配置,https绑定及asp设置
  • 【计算机视觉项目实战】中文场景识别
  • Java 中 Map 初始化的几种方法
  • 【学习方法论】学习的三种境界、三种习惯、三个要点,三个心态
  • [管理与领导-67]:IT基层管理者 - 辅助技能 - 4- 职业发展规划 - 评估你与公司的八字是否相合
  • 【PMO项目管理】深入了解项目管理 | Stakeholder 利益相关者 | 利益相关者之间的立场差异
  • 设计模式-原则篇-01.开闭原则
  • JAVA毕业设计096—基于Java+Springboot+Vue的在线教育系统(源码+数据库+18000字论文)
  • windows环境搭建ELK
  • langchain介绍之-Prompt