哈喽,大家好!
这是一篇可以使用一行代码发送邮件、生成二维码、生成验证码的速食指南,炒鸡简单。为大家介绍一下Hutool Java工具类库。
1. Hutool是什么
下面是官方的介绍:
Hutool是一个Java工具包类库,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类。
官网如下:https://www.hutool.cn/
个人觉得Hutool是一个比较好用的工具类了,方法比较多,也比较全。
下面我们看三个例子,二维码生成、验证码生成、邮件发送。
2. 二维码生成
首先需要引入hutool依赖,以及使用比较广泛的二维码工具类zxing。如下:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.18</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
2.1 一行代码生成二维码
QrCodeUtil.generate("http://www.itmind.net/",500,500, FileUtil.file("QRCODE1.jpg"));
下图为生成的二维码,扫一扫更多惊喜哦!

是不是很Easy,Hutool对zxing做了封装,开箱即食。
2.2 自定义背景以及带有图标的二维码。
先看代码
QrConfig config = new QrConfig(500, 500);
config.setImg("java-coffe.png");
config.setErrorCorrection(ErrorCorrectionLevel.Q);
QrCodeUtil.generate("https://www.24kdh.com/",config, FileUtil.file("QRCODE2.jpg"));
下图为生成的二维码带有图标,而且纠错级别也比上面高,就是遮挡一定的比例仍旧能够识别。但是从远处扫码的识别度却不如上面的二维码。 同样扫一扫有惊喜。推荐使用客户端扫码。

2.4 二维码识别
同样是一行代码搞定:
String decode = QrCodeUtil.decode(FileUtil.file("QRCODE1.jpg"));
Console.log("decodeStr",decode);
3. 验证码生成
3.1 一行代码生成验证码
上代码, 参数分别是宽、高、验证码个数,横线干扰个数。
CaptchaUtil.createLineCaptcha(300, 100,6,100).write("lineCaptcha1.png");
下图为生成的二维码图片,同时也可以获取到生成的验证码,然后进行验证,
3.2 自定义验证码生成规则
下面代码生成一个6位数字的二维码
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(300, 100,6,100);
RandomGenerator randomGenerator = new RandomGenerator("0123456789", 6);
lineCaptcha.setGenerator(randomGenerator);
String lineCaptchaCode = lineCaptcha.getCode();
Console.log("lineCaptchaCode",lineCaptchaCode);
lineCaptcha.write("lineCaptcha.png");
数字验证码图片如下:
3.3 GIF我最闪亮验证码
GifCaptcha gifCaptcha = CaptchaUtil.createGifCaptcha(500, 200, 8);
gifCaptcha.write("gifCaptcha.gif");
String gifCaptchaCode = gifCaptcha.getCode();
Console.log("gifCaptchaCode", gifCaptchaCode);
还可以生成如下GIF验证码图片:
3.4 扭曲防蓝光验证码
ShearCaptcha shearCaptcha = CaptchaUtil.createShearCaptcha(500, 200, 6, 20);
shearCaptcha.write("shearCaptcha.png");
还可以生成一个更加扭曲的验证码图片,据说可以防止近视!
4. 邮件发送
邮件需要引入额外的依赖:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
4.1 一行代码发邮件
在此之前需要简单的配置一下邮件服务,也可以使用代码构建。
maven项目的目录src/main/resources下新建mail.setting文件,内容配置如下。
# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>
host = smtp.yeah.net
# 邮件服务器的SMTP端口,可选,默认25
port = 25
# 发件人(必须正确,否则发送失败)
from = javaNorth@yeah.net
# 用户名,默认为发件人邮箱前缀
user = javaNorth
# 密码(注意,某些邮箱需要为SMTP服务单独设置授权码,这里是开启了网易的SMTP服务)
pass = XXXXXXXXXXXXX
一行代码发送邮件给指定的邮箱,参数分别为邮箱地址,主题,内容,是否为HTML内容。
MailUtil.send("liuyuanjiang109@126.com","JavaNorth Mail Test","This Mail from java North",false);
邮件内容如下:

4.2 群发邮件,html文本,并且包含多个附件
我们也可以使用代码构建邮件服务参数。并且可以群发邮件,发送html文本,以及多个附件。
示例代码如下:
MailAccount account = new MailAccount();
account.setHost("smtp.yeah.net");
account.setPort(25);
account.setAuth(true);
account.setFrom("javaNorth@yeah.net");
account.setUser("javaNorth");
account.setPass("DJQ********");
ArrayList<String> mailList = CollUtil.newArrayList(
"liu********9@outlook.com",
"liu********@126.com");
MailUtil.send( account, mailList,"JavaNorth Mail Test",
"<h1>JavaNorth Html Mail Test</h1>",true,
FileUtil.file("testOpenLeagueoflegends1.pdf"),
FileUtil.file("gifCaptcha.gif"));
收到邮件如下所示:

邮件发送同时也可以使用SSL加密方式发送,此处也就不再举例子了。感兴趣的话随时来交流群海皮哈!
不同的邮箱可能配置略有不同,如果遇到问题,欢迎随时来海皮!
老规矩,示例代码已上Github,并且提供邮箱练习使用:https://github.com/javatechnorth/java-study-note/tree/master/javaOpenSource/src/main/java/hutool
总结
Hutool还有很多功能,使用比较爽,大家随机食用即可。再次感谢开发者的贡献!