diff --git a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/BaseUtil.java b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/BaseUtil.java index 4c580ca6..64cbfe94 100644 --- a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/BaseUtil.java +++ b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/BaseUtil.java @@ -1,11 +1,15 @@ package org.dromara.email.comm.utils; -import java.io.File; - public class BaseUtil { -public static String getPathName(String path) { - String[] split = path.split(File.separator); - return split[split.length-1]; -} + /** + * getPathName + *

分隔文件路径,并获取文件名 + * @param path 文件路径 + * @author :Wind + */ + public static String getPathName(String path) { + String[] split = path.split("/"); + return split[split.length - 1]; + } } diff --git a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/HtmlUtil.java b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/HtmlUtil.java index 600e2155..204a6d6b 100644 --- a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/HtmlUtil.java +++ b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/utils/HtmlUtil.java @@ -12,6 +12,7 @@ import java.util.Objects; /** * HtmlUtil *

Html相关工具 + * * @author :Wind * 2023/6/7 20:15 **/ @@ -30,7 +31,7 @@ public final class HtmlUtil { * @author :Wind */ public static List readHtml(String name) throws MailException { - try (InputStream is = htmlUtil.getClass().getResourceAsStream("/template/" + name);) { + try (InputStream is = HtmlUtil.class.getResourceAsStream("/template/" + name);) { return readHtml(is); } catch (IOException e) { throw new MailException(e); @@ -77,49 +78,48 @@ public final class HtmlUtil { } /** - * replacePlaceholder + * replacePlaceholder *

将所包含占位符的字符串替换为固定值 - * @param data 源数据 + * + * @param data 源数据 * @param parameter key为占位符名称 value为占位符应替换的值 * @author :Wind - */ + */ public static List replacePlaceholder(List data, Map parameter) { - List list = new ArrayList<>(); - for (String datum : data) { + for (int i = 0; i < data.size(); i++) { for (Map.Entry s : parameter.entrySet()) { String piece = piece(s.getKey()); - if (datum.contains(piece)){ - list.add(datum.replace(piece, s.getValue())); - }else { - list.add(datum); + if (data.get(i).contains(piece)){ + data.set(i,s.getValue()); } - } } - return list; + return data; } /** - * pieceHtml + * pieceHtml *

将数据拼合为html + * * @param data 需要拼合的数据 * @author :Wind - */ - public static String pieceHtml(List data){ + */ + public static String pieceHtml(List data) { StringBuilder sb = new StringBuilder(); for (String datum : data) { - sb.append(datum); - sb.append("\r\n"); + sb.append(datum); + sb.append("\r\n"); } return sb.toString(); } /** - * piece + * piece *

将参数拼合为完整占位符 + * * @author :Wind - */ - public static String piece(String parameter){ - return "#{"+parameter+"}"; + */ + public static String piece(String parameter) { + return "#{" + parameter + "}"; } } diff --git a/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailService.java b/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailService.java index e80d4aed..009f84e4 100644 --- a/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailService.java +++ b/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailService.java @@ -19,6 +19,8 @@ import javax.mail.internet.MimeMultipart; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; + public class MailService implements MailClient { private MailBuild mailBuild; @@ -52,11 +54,14 @@ public class MailService implements MailClient { Message message = mailBuild.getMessage(); message.setRecipients(Message.RecipientType.TO, mailBuild.eliminate(mailAddress)); message.setSubject(title); - message.setText(body); - Multipart multipart = new MimeMultipart(); - forFiles(multipart, files); - message.setContent(multipart); - + if (Objects.isNull(body) ||body.isEmpty()){ + message.setText(body); + } + if (files.length != 0){ + Multipart multipart = new MimeMultipart(); + forFiles(multipart, files); + message.setContent(multipart); + } Transport.send(message); } catch (MessagingException e) { throw new MailException(e); @@ -134,14 +139,22 @@ public class MailService implements MailClient { Message message = mailBuild.getMessage(); message.setRecipients(Message.RecipientType.TO, mailBuild.eliminate(mailAddress)); message.setSubject(title); - message.setText(body); - Multipart multipart = new MimeMultipart(); + + Multipart multipart = new MimeMultipart("alternative"); //读取模板并进行变量替换 List strings = HtmlUtil.replacePlaceholder(HtmlUtil.readHtml(htmlName), parameter); //拼合HTML数据 String htmlData = HtmlUtil.pieceHtml(strings); + if (!body.isEmpty()){ + // 创建文本正文部分 + MimeBodyPart textPart = new MimeBodyPart(); + textPart.setText(body); + multipart.addBodyPart(textPart); + } //添加附件 - forFiles(multipart, files); + if (files.length != 0){ + forFiles(multipart, files); + } MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(htmlData, "text/html;charset=UTF-8"); multipart.addBodyPart(htmlPart);