文档章节

使用Hutool发送工作日报

路小磊
 路小磊
发布于 06/20 11:39
字数 666
阅读 1144
收藏 1

需求来源

某一天Hutool群中有美女(也可能是抠脚大汉)抱怨领导,说让ta每天写工作日报,说明今天做了哪些工作,每周还有周报。美女遇到问题嘛,本着能聊则聊,能帮则帮的原则,于是使用Hutool写了一个Demo。

使用到的模块和工具类

  1. cron模块,用于定时发送邮件
  2. extra模块,MailUtil,用于发送邮件
  3. poi模块,WordWriter,用于生成日报的word

Demo介绍

Demo项目可以访问码云地址获取:https://gitee.com/loolly_admin/daily-work

项目结构

src/main/java
    cn/hutool/example/dailyWork/
        DailyWorkGenerator.java ---- 日报生成器,用于生成Word文档
        MailSendTask.java       ---- 邮件发送任务,用于发送邮件
        DailyWorkMain.java      ---- 定时任务主程序,用于启动定时任务

src/main/resources
    config/
        cron.setting            ---- 定时任务配置文件
        mail.setting            ---- 邮箱配置文件

代码实现

  1. 生成日报Word
/** 标题字体 */
private static final Font TITLE_FONT = new Font("黑体", Font.PLAIN, 22);
/** 正文字体 */
private static final Font MAIN_FONT = new Font("宋体", Font.PLAIN, 14);


/**
 * 生成日报
 * 
 * @return 日报word文件
 */
public static File generate() {
	// 1、准备文件
	File wordFile = FileUtil.file(StrUtil.format("每日工作汇报_{}.docx", DateUtil.today()));
	if(FileUtil.exist(wordFile)) {
		// 如果文件存在,删除之(可能上次发送遗留)
		wordFile.delete();
	}
	
	// 生成并写出word
	Word07Writer writer = new Word07Writer(wordFile);
	writer.addText(ParagraphAlignment.CENTER, TITLE_FONT, "工作日报");
	writer.addText(MAIN_FONT, "");
	writer.addText(MAIN_FONT, "尊敬的领导:");
	writer.addText(MAIN_FONT, "    今天我在Hutool群里摸鱼,什么工作也没做。");
	
	writer.close();
	return wordFile;
}
  1. 发送邮件

在mail.setting中配置发件箱信息

# 发件人(必须正确,否则发送失败)
from = Hutool<hutool@yeah.net>
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
user = hutool
# 密码
pass = XXXX

#使用 STARTTLS安全连接
startttlsEnable = true
#使用 SSL安全连接
sslEnable = true
// 今天的日期,格式类似:2019-06-20
String today = DateUtil.today();

// 生成汇报Word
File dailyWorkDoc = DailyWorkGenerator.generate();
// 发送邮件
MailUtil.sendHtml("hutool@foxmail.com", StrUtil.format("{} 工作日报", today), "请见附件。", dailyWorkDoc);

StaticLog.debug("{} 工作日报已发送给领导!", today);
  1. 定时发送

我们将刚才的发送邮件作为定时任务加入到配置文件:

[cn.hutool.example.dailyWork]
# 每天下午6点定时发送
MailSendTask.execute = 00 00 18 * * *
  1. 启动定时任务
// 设置秒匹配(只有在定时任务精确到秒的时候使用)
CronUtil.setMatchSecond(true);
// 启动定时任务,自动加载配置文件中的内容
CronUtil.start();

效果:

© 著作权归作者所有

路小磊

路小磊

粉丝 409
博文 55
码字总数 42397
作品 5
呼和浩特
程序员
私信 提问
加载中

评论(6)

木昜不良人
天天摸鱼,小心领导抓你。
路小磊
路小磊 博主
哈哈,没看发布日期是周日么。
一笑阑珊5516
一笑阑珊5516
😆天才博主
筑梦前行
筑梦前行
😝挺好的
HandsomeBoy丶
HandsomeBoy丶
😄
soulCoke
soulCoke
优秀,哈哈哈,天天摸鱼
Hutool 4.5.2 发布,点滴积累,感动人心

Hutool是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以"甜甜的"。Hutool 最初是我项目中util包的一个整理,后来慢慢积累并加入更多非...

路小磊
03/22
3K
35
Java使用Hutool实现AES、DES加密解密

介绍 AES和DES同属对称加密算法,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用...

路小磊
2017/08/07
4.6K
21
Java 工具集-Hutool

Hutool是一个Java工具集,针对我们项目中util包进行开刀,抽象大量的工具方法,旨在减少项目中工具类的数量,将我们的编码工作专注在业务上。Hutool 对文件、流、加密解密、转码、正则、线程...

路小磊
2014/04/17
62.5K
86
哎。 求个职

本人在武汉,希望就在本市找份事做。 简历如下。 姓名: 刘某 年龄: 27 相关工作经验: 2年 联系电话: 18827070934 熟悉的框架,以及使用过的工具: 熟悉 java servlet api, jdbc api, sql,...

Motenai
2017/07/30
5.7K
59
Hutool 2.15.8 发布,Java 工具集

Hutool 2.15.8 发布了。Hutool 是一个Java工具包,提供了丰富的文件、日期、日志、正则、字符串、配置文件等工具方法,并封装了一套简单易用的ORM框架。 更新内容: 1、修复Http编码问题 2、...

路小磊
2016/09/07
2.4K
10

没有更多内容

加载失败,请刷新页面

加载更多

聊聊rocketmq的pullThresholdForTopic

序 本文主要研究一下rocketmq的pullThresholdForTopic pullThresholdForTopic rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java publi......

go4it
12分钟前
4
0
sqlplus / as sysdba 没有权限

想通过如下命令登陆,这种方式是以操作系统权限认证的oracle sys管理员登陆 sqlplus / as sysdba BUT.... 提示我没有权限, 百度下是由于当前用户不在ora_dba用户组中 (我的环境是win10) ...

1只特立独行的猪
26分钟前
4
0
[2019好程序员大数据教程]SparkGraphx从入门到精通(33集视频+源码+笔记)

1、什么是Spark GraphX? Spark GraphX是一个分布式的图处理框架。社交网络中,用户与用户之间会存在错综复杂的联系,如微信、QQ、微博的用户之间的好友、关注等关系,构成了一张巨大的图,单...

好程序员官网
今天
7
0
DDD(十)--仓储

1、引言 DDD中的Repository(仓储):协调领域和数据映射层,利用类似与集合的接口来访问领域对象。——《领域驱动设计-软件核心复杂性应对之道》 仓储是DDD中产生的概念,也就是说,如果应...

MrYuZixian
今天
10
0
Jenkins的多种迁移方法

说明 Jenkins有时需要进行迁移,主目录会发生改变,本文主要讲解如何更改主目录。由于jenkins安装方式的不同,主目录也不一样。 本测试环境:Centos7.6 X64。注意:在更改主目录之前,请一定...

Elson
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部