之前本文的标题是:《闲着无聊简单封装了一个邮件发送工具类》写于2021年12月1日。
当时是基于org.apache.commons.mail
进行的简单封装,但是在今天去另一个项目里面复用的时候遇到了一丢丢麻烦,为了保持项目的可塑性和便于修改,于是直接使用了Hutool工具,特地记录一下,直接在之前的文章上做了修改。
开始使用:
在Java中发送邮件主要品依靠javax.mail包,但是由于使用比较繁琐,因此Hutool针对其做了封装。由于依赖第三方包,因此将此工具类归类到extra模块中:
1、引入pom.xml配置:
Maven依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.20</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
说明 com.sun.mail是javax.mail升级后的版本,新版本包名做了变更。
在classpath(在标准Maven项目中为src/main/resources)的config目录下新建mail.setting文件。
2、编写配置类:
mail.setting
# 邮件服务器的SMTP地址
host = smtp.yeah.net
# 邮件服务器的SMTP端口
port = 465
# 发件人(必须正确,否则发送失败)
from = hutool@yeah.net
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
user = hutool
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
pass = q1w2e3
#使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。
starttlsEnable = true
# 使用SSL安全连接
sslEnable = true
# 指定实现javax.net.SocketFactory接口的类的名称,这个类将被用于创建SMTP的套接字
socketFactoryClass = javax.net.ssl.SSLSocketFactory
# 如果设置为true,未能创建一个套接字使用指定的套接字工厂类将导致使用java.net.Socket创建的套接字类, 默认值为true
socketFactoryFallback = true
# 指定的端口连接到在使用指定的套接字工厂。如果没有设置,将使用默认端口456
socketFactoryPort = 465
# SMTP超时时长,单位毫秒,缺省值不超时
timeout = 0
# Socket连接超时值,单位毫秒,缺省值不超时
connectionTimeout = 0
3、测试方法:
测试类:
public static void main(String[] args) {
String send = MailUtil.send("收件邮箱地址", "测试一下!", "仅用于测试邮件推送服务!", false);
}
实测效果还是比较完美的……
详细说明请参考Hutool邮件工具官方文档:(传送门)