今天给大家分享使用Hutool中的MailUtil实现邮件的发送,主要实现了发送普通文本邮件、发送Html文件、发送邮件包含本地附件、远程下载附件、指定多个发件人的功能。
1、pom.xml 导入依赖包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!--邮件依赖包-->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
2、新增邮件配置文件 src/main/resources/config/mail.setting
# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>可以自定义
host = smtp.qq.com
# 邮件服务器的SMTP端口,可选,默认25 465
port = 587
# 发件人邮箱地址
from = 431xxxxxx@qq.com
# 用户名,默认为发件人邮箱前缀
user = xxxxxxxxx
# 密码(注意,某些邮箱需要为SMTP服务单独设置授权码 比如QQ邮箱)
pass = xxxxxxxxxxxxxx
#使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展
starttlsEnable = true
# 需要设置为false 否则QQ邮箱测试邮件发送报错
sslEnable = false
注意:针对sslEnable 一定要设置为 false,否则会报错
3、新增测试类 src/main/java/EmailTest.java
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;
import cn.hutool.http.HttpUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author haogm
* @ClassName EmailTest
* @description: TODO
* @datetime 2023年 01月 06日 14:07
* @version: 1.0
*/
public class EmailTest {
public static void main(String[] args) {
// 发送普通文本文件
EmailTxt();
// 发送HTml内容的邮件,包含附件
EmailHtml();
// 指定多个收件人邮件
EmailMulit();
}
/**
* 发送普通文本邮件
*/
private static void EmailTxt() {
MailUtil.send("xxxx@outlook.com", "文本邮件测试", "IT技术分享社区,一个有态度的互联网分享平台!", false);
}
/**
* 发送包含html的邮件
*/
private static void EmailHtml() {
String html = "<h2>Html邮件测试</h2><p>IT技术分享社区,一个有态度的互联网分享平台!</p><div><img alt='' src='https://img-blog.csdnimg.cn/img_convert/dcf12652858aeceab6d38d53a1fb5d7f.jpeg' /></div>";
//MailUtil.send("xxxxx@outlook.com", "Html邮件测试", html, true);
// 添加附件
List<File> fileList = new ArrayList<>();
File file1=new File("D:\\Test.xlsx");
File file2=new File("D:\\image.png");
// 通过远程url下载文件
File file3=GetUrl("https://img-blog.csdnimg.cn/img_convert/aaad05ecfba45b824bac3e24907e7abf.png","D:\\远程下载图片1.png");
// 多个附件参数直接往后面追加即可
MailUtil.send("hgmyz@outlook.com", "Html邮件测试", html, true,file1,file2,file3);
}
/**
* 发送邮件指定多个收件人
*/
private static void EmailMulit() {
// 设置发送人员列表
List<String> sendList=new ArrayList<>();
sendList.add("xxxxxxxxx@163.com");
sendList.add("xxxxxx@qq.com");
MailUtil.send(sendList, "文本邮件测试", "IT技术分享社区,一个有态度的互联网分享平台!", false);
}
/**
*
* @param url 下载地址
* @param filePath 下载后的存储文件路径
* @return 根据url直接下载文件作为上传的附件
*/
private static File GetUrl(String url,String filePath)
{
return HttpUtil.downloadFileFromUrl(url,filePath);
}
}