From 38dad619b823d2d687cf8f8500e3dfd290a487ba Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 20 Aug 2019 11:45:52 +0800 Subject: [PATCH] add img for mail --- CHANGELOG.md | 1 + .../main/java/cn/hutool/extra/mail/Mail.java | 21 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c32b72532..5e9a64c60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### 新特性 * 【core】 改进CollUtil.zip逻辑,减少内存复制(issue#I10T01@Gitee) +* 【extra】 邮件支持图片(pr#495@Github) ### Bug修复 * 【http】 修复HttpRquest中body方法长度计算问题(issue#I10UPG@Gitee) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/mail/Mail.java b/hutool-extra/src/main/java/cn/hutool/extra/mail/Mail.java index 08620a92b..ea24db971 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/mail/Mail.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/mail/Mail.java @@ -21,6 +21,7 @@ import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.util.ByteArrayDataSource; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; @@ -139,7 +140,7 @@ public class Mail { this.bccs = bccs; return this; } - + /** * 设置多个回复地址(reply-to) * @@ -192,10 +193,10 @@ public class Mail { * @return this */ public Mail setFiles(File... files) { - if(ArrayUtil.isEmpty(files)) { + if (ArrayUtil.isEmpty(files)) { return this; } - + final DataSource[] attachments = new DataSource[files.length]; for (int i = 0; i < files.length; i++) { attachments[i] = new FileDataSource(files[i]); @@ -211,7 +212,7 @@ public class Mail { * @since 4.0.9 */ public Mail setAttachments(DataSource... attachments) { - if(ArrayUtil.isNotEmpty(attachments)) { + if (ArrayUtil.isNotEmpty(attachments)) { this.attachments = attachments; } return this; @@ -317,7 +318,7 @@ public class Mail { if (ArrayUtil.isNotEmpty(this.reply)) { msg.setReplyTo(InternalMailUtil.parseAddressFromStrs(this.reply, charset)); } - + return msg; } @@ -349,18 +350,20 @@ public class Mail { // 图片 for (Map.Entry entry : imageMap.entrySet()) { - BodyPart messageBodyPart = new MimeBodyPart(); + MimeBodyPart imgBodyPart = new MimeBodyPart(); DataSource ds; try { ds = new ByteArrayDataSource(entry.getValue(), "image/jpeg"); + IoUtil.close(entry.getValue()); } catch (IOException e) { throw new MailException(e); } - messageBodyPart.setDataHandler(new DataHandler(ds)); - messageBodyPart.setHeader("Content-ID", String.format("<%s>", entry.getKey())); + imgBodyPart.setDataHandler(new DataHandler(ds)); + // imgBodyPart.setHeader("Content-ID", String.format("<%s>", entry.getKey())); + imgBodyPart.setContentID(entry.getKey()); // add it - mainPart.addBodyPart(messageBodyPart); + mainPart.addBodyPart(imgBodyPart); } return mainPart;