今天给大家分享使用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
需要新增mail.setting配置文件,配置对应的发件邮箱信息和相应的参数,这里用qq邮箱为案例。具体的可以参照配置的注释。
# 邮件服务器的SMTP地址,可选,默认为smtp.<发件人邮箱后缀>可以自定义 host = smtp.qq.com # 邮件服务器的SMTP端口,可选,默认25 465 port = 587 # 发件人邮箱地址 from = xxxxxxxx@qq.com # 用户名,默认为发件人邮箱前缀 user = xxxxxxxxx # 密码(注意,某些邮箱需要为SMTP服务单独设置授权码 比如QQ邮箱) pass = xxxxxxxxxxxxxxxxxxxxxx #使用 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("xxxxxxxx@outlook.com", "文本邮件测试", "IT技术分享社区,一个有态度的互联网分享平台!", false); } /** * 发送包含html的邮件 */ private static void EmailHtml() { String html = "<h2>Html邮件测试</h2><p>IT技术分享社区,一个有态度的互联网分享平台!</p><div><img alt='' src='https://ucc.alicdn.com/images/user-upload-01/img_convert/dcf12652858aeceab6d38d53a1fb5d7f.jpeg' /></div>"; //MailUtil.send("xxxxxxxx@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://ucc.alicdn.com/images/user-upload-01/img_convert/aaad05ecfba45b824bac3e24907e7abf.png","D:\\远程下载图片1.png"); // 多个附件参数直接往后面追加即可 MailUtil.send("xxxxxxxxx@outlook.com", "Html邮件测试", html, true,file1,file2,file3); } /** * 发送邮件指定多个收件人 */ private static void EmailMulit() { // 设置发送人员列表 List<String> sendList=new ArrayList<>(); sendList.add("xxxxxxx@outlook.com"); sendList.add("xxxxxxxxx@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); } }
4、预览效果