基于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.mzph.cn/news/69264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB 2022b 中设置关闭 MATLAB 之前进行询问

在 MATLAB 2022b 中可以进行设置,在关闭 MATLAB 之前进行询问,防止意外关闭 MATLAB。如图:

解决IDEA中java的system.properties乱码问题

在拉了别人的代码到本地后发现system.properties中中文注释都变成了乱码,故记录下解决步骤,供参考,我的系统是mac系统 1、在IDEA中打开设置,IDEA--->Preferences 2、点击Editor-->File Encodings 3、图中三处选择UTF-8&…

MATLAB 的 figure 用法总结

文章目录 Syntax:DescriptionExamples1.figure2.figure(Name,Value)Position 属性: 设置 Figure 的位置和大小Name 属性: 设置 Figure 的名称NumberTitle 属性: 取消 Figure 名称里默认的数字units 属性color 属性 3.f figure(___)4.Working with Multiple Figures…

拥抱国产化,生态软件信创兼容适配之路

国产化是指技术引进项目投产后所生产的产品中,国内生产件的数量占整件产品生产件数量。换句话说,软件国产化的占比,直接影响到技术是否会在某一个时点上被”卡脖子“。 随着国家经济的发展和技术水平的提高,国家整体实力大大增强…

【二】kubernetes master单节点拓展为集群

#服务器 #部署 #云原生 #k8s 一、 前言 一、ubuntu20.04上搭建containerd版( 1.2.4 以上)k8s及kuboard V3 接上文中,我们已经部署好了单节点master的k8s集群,在生产环境中,单节点的master肯定是不行的,那…

MybatisPlus基本配置查询操作

无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service&#…

微信小程序 校园周边美食商城分享系统

管理员、会员、商家可通过Android系统手机打开系统,注册登录后可进行管理员后端;首页、个人中心、会员管理、商家管理、美食类型管理、美食信息管理、美食交流、我的收藏管理、系统管理、订单管理,会员前端;首页、美食信息、美食交…

三步搭建个人网站并发布上线【内网穿透】

三步搭建个人网站并发布上线【内网穿透】 文章目录 三步搭建个人网站并发布上线【内网穿透】前言一、在本地电脑上制作一个网站二、使用WordPress建立网站三、通过cpolar建立的数据隧道发布到公网上 前言 在这个个性飞扬的时代,每个人都希望拥有表现自我的平台&…

【Microsoft Edge】如何彻底卸载 Edge

目录 一、问题描述 二、卸载 Edge 2.1 卸载正式版 Edge 2.2 卸载非正式版 Edge 2.2.1 卸载通用的 WebView2 2.2.2 卸载 Canary 版 Edge 2.2.3 卸载其他版本 2.3 卸载 Edge Update 2.4 卸载 Edge 的 Appx 额外安装残留 2.5 删除日志文件 2.6 我就是想全把 Edge 都删了…

【Ant Design】Form.Item创建自定义表单

一、概述 Antd是一个非常强大的UI组件库,里面的Form表单组件也基本能满足我们大多数场景。但是也有需要自定义表单的场景。 Vue2里我们使用v-model,结合子组件的model属性,来实现自定义组件的双向绑定。 Vue3里我们使用v-model,…

【快应用】快应用与网页通信踩坑合集处理

【关键词】 Web、postMessage、onMessage 【问题背景】 快应用中通过web组件加载的h5网页,快应用在和网页进行通信时,经常会遇到网页发送信息给快应用,快应用成功收到,反过来的时候,h5网页就没法收到了。如提示 xxx …

05-Redis

1、Redis为什么快? 1、纯内存操作 2、单线程可以省去多线程时CPU上下文会切换的时间 3、渐进式ReHash、缓存时间戳 数组需要扩容的时候,他会维护两张hash表,比如第一张的数组长度为6,另一张的数组长度为12,在set和g…

设计模式-建造者(生成器)模式

文章目录 简介建造者模式的核心概念产品(Product)建造者(Builder)指挥者(Director)建造者模式与其他设计模式的关系工厂模式和建造者模式uml对比 建造者模式的实现步骤建造者模式的应用场景spring中应用 建…

Windows中多线程的基础知识1——互斥对象

目录 1 多线程的基本概念1.1 进程一、程序和进程的概念二、进程组成三、进程地址空间 1.2 线程一、线程组成二、线程运行三、线程创建函数 1.3 多进程与多线程并发一、多进程并发二、多线程并发 2 线程同步2.1 一个经典的线程同步问题2.2 利用互斥对象实现线程同步一、创建互斥…

JavaScript-----对象(创建对象、数组与字符串)

目录 前言: 1. JavaScript创建对象 1.1 对象的创建 1.2 对象的调用 1.3 for-in循环语句 2.内置对象 2.1 Array(数组)对象 属性和方法 2.2 String(字符串)对象 属性和方法 2.3 Math对象 2.4 日期对象 前言&a…

SIEM 中不同类型日志监控及分析

安全信息和事件管理(SIEM)解决方案通过监控来自网络的不同类型的数据来确保组织网络的健康安全状况,日志数据记录设备上发生的每个活动以及整个网络中的应用程序,若要评估网络的安全状况,SIEM 解决方案必须收集和分析不…

mysql数据库使用技巧整理

查看当前数据库已建立的client连接 mysql中执行 -- 查看数据库允许的最大连接数,不是实时正在使用的连接数 SHOW VARIABLES LIKE max_connections; mysql中执行 -- 查看当前数据库client的连接数 SHOW STATUS LIKE Threads_connected; mysql中执行 -- 查看具…

微服务-gateway基本使用

文章目录 一、前言二、gateway网关1、什么是微服务网关?2、微服务架构下网关的重要性2.1、没有网关2.2、有网关 3、gateway的功能4、gateway实战4.1、依赖配置4.2、添加网关配置4.3、添加网关启动类4.4、查看项目是否启动成功4.5、验证路由配置是否正确 三、总结 一…

行业追踪,2023-09-04

自动复盘 2023-09-04 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

2023年高教社杯 国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…