From 4e540aead63a5d80c0d61acc57b734c40d0d40d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Sat, 2 Sep 2023 00:00:46 +0800
Subject: [PATCH 1/4] =?UTF-8?q?update=20=E7=AE=80=E5=8C=96=20MailService?=
=?UTF-8?q?=20=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../org/dromara/email/api/MailClient.java | 444 +---------------
.../email/comm/entity/MailMessage.java | 149 ++----
.../dromara/email/core/service/MailBuild.java | 4 +-
.../email/core/service/MailService.java | 496 +++---------------
4 files changed, 102 insertions(+), 991 deletions(-)
diff --git a/sms4j-Email-plugin/sms4j-Email-api/src/main/java/org/dromara/email/api/MailClient.java b/sms4j-Email-plugin/sms4j-Email-api/src/main/java/org/dromara/email/api/MailClient.java
index 7b77947c..d8f4b834 100644
--- a/sms4j-Email-plugin/sms4j-Email-api/src/main/java/org/dromara/email/api/MailClient.java
+++ b/sms4j-Email-plugin/sms4j-Email-api/src/main/java/org/dromara/email/api/MailClient.java
@@ -2,453 +2,13 @@ package org.dromara.email.api;
import org.dromara.email.comm.entity.MailMessage;
-import java.io.InputStream;
-import java.lang.String;
-import java.util.List;
-import java.util.Map;
-
public interface MailClient {
/**
- * sendMail
- *
发送纯文本邮件
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param body 邮件正文
- * @author :Wind
- */
- void sendMail(String mailAddress, String title ,String body);
-
- /**
- * sendMail
- *
群体发送纯文本邮件
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件正文
- * @author :Wind
- */
- void sendMail(List mailAddress ,String title ,String body);
-
- /**
- * sendEmail
- * 发送带有附件的文本邮件
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param body 邮件正文
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendEmail(String mailAddress, String title, String body,Map files);
-
- /**
- * sendEmail
- * 发送带有附件的文本邮件
- * @param mailAddress 收件人地址 多个收件人地址请按英文','字符隔开
- * @param title 邮件标题
- * @param body 邮件正文
- * @param zipName 压缩包名称 比如 附件.zip
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendEmail(String mailAddress, String title, String body, String zipName, Map files);
-
- /**
- * sendEmail
- * 群体发送带有附件的文本邮件
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件正文
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendEmail(List mailAddress, String title, String body, Map files);
-
- /**
- * sendEmail
- * 单人发送带有附件的文本邮件,同时可以携带密送人和抄送人
- *
需要注意的是,密送人和抄送人也不能存在于黑名单内,否则也会被过滤
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件正文
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendEmail(String mailAddress, String title, String body,List cc,List bcc,Map files);
-
- /**
- * sendEmail
- * 群体发送带有附件的文本邮件,同时可以携带密送人和抄送人
- *
需要注意的是,密送人和抄送人也不能存在于黑名单内,否则也会被过滤
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件正文
- * @param files 附件,可添加多个
- * @param bcc 密送人
- * @param cc 抄送人
- * @author :Wind
- */
- void sendEmail(List mailAddress, String title, String body,List cc,List bcc,Map files);
-
- /**
- * sendEmail
- * 发送邮件,可以通过对象构造群体发送或者单体发送,取决于添加进去的收件人,同时可以添加
- * 密送人,抄送人,附件等参数
- * @param mailMessage 发送邮件参数对象
- * @author :Wind
- */
- void sendEmail(MailMessage mailMessage);
-
- /**
- * sendHtml
- *
读取模板发送html邮件,无正文
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param htmlName 邮件正文
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title , String htmlName, Map parameter);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,无正文
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param htmlName 邮件正文
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title , String htmlName, Map parameter);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,无正文
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param htmlName 邮件模板名称
- * @param parameter 实体
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title , String htmlName, Parameter parameter);
-
- /**
- * sendHtml
- *
读取模板发送html邮件,无正文
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param htmlName 邮件模板名称
- * @param parameter 实体
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title , String htmlName, Parameter parameter);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,无正文,带附件
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param htmlName 邮件模板名称
- * @param parameter 实体
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title , String htmlName,Map parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,无正文,带附件
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param htmlName 邮件模板名称
- * @param parameter 实体
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title , String htmlName,Map parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,无正文,带附件
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param htmlName 邮件模板名称
- * @param parameter 实体
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title , String htmlName,Parameter parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,无正文,带附件
- *
将默认读取resources/template下的html文件,第三个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param htmlName 邮件模板名称
- * @param parameter 实体
- * @param files 附件,可添加多个
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title , String htmlName,Parameter parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title ,String body, String htmlName, Map parameter);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title ,String body, String htmlName, Map parameter);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter 实体
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title ,String body, String htmlName, Parameter parameter);
-
- /**
- * sendHtml
- *
读取模板发送html邮件,并携带正文
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter 实体
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title ,String body, String htmlName, Parameter parameter);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title ,String body, String htmlName, Map parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址 多个收件人地址请按英文','字符隔开
- * @param title 邮件标题
- * @param body 邮件文本正文 可为空
- * @param htmlName 邮件正文
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @param zipName 压缩包名称 比如 附件.zip
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :bleachtred
- */
- void sendHtml(String mailAddress, String title, String body, String htmlName, Map parameter, String zipName, Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址 多个收件人地址请按英文','字符隔开
- * @param title 邮件标题
- * @param body 邮件文本正文 可为空
- * @param htmlName 邮件正文
- * @param parameter 字段名称为变量名称,字段值为变量值
- * @param zipName 压缩包名称 比如 附件.zip
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title, String body, String htmlName, Parameter parameter, String zipName, Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title ,String body, String htmlName, Map parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter 字段名称为变量名称,字段值为变量值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :Wind
- */
- void sendHtml(String mailAddress, String title ,String body, String htmlName, Parameter parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
将默认读取resources/template下的html文件,第四个参数为html的名称,需携带尾缀
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param htmlName 邮件正文
- * @param parameter 字段名称为变量名称,字段值为变量值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title ,String body, String htmlName, Parameter parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
从用户给定的输入流获取html模板文件
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param html html模板的输入流,这个流可以来自任何来源,例如网络请求,或是本地文件,或者对象存储等
- * @param parameter key为模板的变量名称 无需携带大括号 value为模板变量所对应的值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title , String body, InputStream html, Map parameter, Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
从用户给定的输入流获取html模板文件
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param html html模板的输入流,这个流可以来自任何来源,例如网络请求,或是本地文件,或者对象存储等
- * @param parameter 字段名称为变量名称,字段值为变量值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title ,String body, InputStream html, Parameter parameter,Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
从用户给定的输入流获取html模板文件
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param html html模板的输入流,这个流可以来自任何来源,例如网络请求,或是本地文件,或者对象存储等
- * @param parameter key为变量名称,value为变量值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @param cc 抄送人,可添加多个
- * @param bcc 密送人,可添加多个
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title,String body,InputStream html,List cc,List bcc,Map parameter, Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
从用户给定的输入流获取html模板文件
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param html html模板的输入流,这个流可以来自任何来源,例如网络请求,或是本地文件,或者对象存储等
- * @param parameter 字段名称为变量名称,字段值为变量值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @param cc 抄送人,可添加多个
- * @param bcc 密送人,可添加多个
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title,String body,InputStream html,List cc,List bcc,Parameter parameter, Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
从用户给定的输入流获取html模板文件
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param html html模板的名称
- * @param parameter 字段名称为变量名称,字段值为变量值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @param cc 抄送人,可添加多个
- * @param bcc 密送人,可添加多个
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title,String body,String html,List cc,List bcc,Map parameter, Map files);
-
- /**
- * sendHtml
- * 读取模板发送html邮件,并携带正文和附件
- *
从用户给定的输入流获取html模板文件
- *
用户可以自己编写一个实体类,并实现Parameter接口,编写get和set方法,这样一来字段的名称则为模板变量名称,对象的值则为模板变量的值
- * @param mailAddress 收件人地址,添加多个
- * @param title 邮件标题
- * @param body 邮件文本正文
- * @param html html模板的名称
- * @param parameter 字段名称为变量名称,字段值为变量值
- * @param files 附件,可添加多个 key 为文件名,value为文件的路径
- * @param cc 抄送人,可添加多个
- * @param bcc 密送人,可添加多个
- * @author :Wind
- */
- void sendHtml(List mailAddress, String title,String body,String html,List cc,List bcc,Parameter parameter, Map files);
-
-
- /**
- * sendHtml
- * 发送邮件,可以通过对象构造群体发送或者单体发送,取决于添加进去的收件人,同时可以添加
+ * 发送邮件,可以通过对象构造群体发送或者单体发送,取决于添加进去的收件人,同时可以添加
* 密送人,抄送人,附件等参数
* @param mailMessage 发送邮件参数对象
* @author :Wind
*/
- void sendHtml(MailMessage mailMessage);
+ void send(MailMessage mailMessage);
}
diff --git a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
index c068ffb7..59eff79b 100644
--- a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
+++ b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
@@ -1,5 +1,6 @@
package org.dromara.email.comm.entity;
+import lombok.Builder;
import lombok.Getter;
import java.io.InputStream;
@@ -9,136 +10,58 @@ import java.util.List;
import java.util.Map;
@Getter
+@Builder
public class MailMessage {
- /** 收件人地址*/
+ /**
+ * 收件人地址
+ */
private List mailAddress;
- /** 邮件主题*/
+ /**
+ * 邮件主题
+ */
private String title;
- /** 文字正文*/
+ /**
+ * 文字正文
+ */
private String body;
- /** html模板文件路径(resources目录下的路径)*/
+ /**
+ * html模板文件路径(resources目录下的路径)
+ */
private String htmlPath;
- /** html模板文件的输入流,可来自任意可读取位置*/
+ /**
+ * html模板文件的输入流,可来自任意可读取位置
+ */
private InputStream htmlInputStream;
- /** html 模板参数*/
- private Map htmlValues;
+ /**
+ * html 模板参数
+ */
+ private Map htmlValues;
- /** 抄送人*/
+ /**
+ * zip文件名称
+ */
+ private String zipName;
+
+ /**
+ * 抄送人
+ */
private List cc;
- /** 密送人*/
+ /**
+ * 密送人
+ */
private List bcc;
- /** 附件*/
- private Map files;
+ /**
+ * 附件
+ */
+ private Map files;
- public static MailsBuilder Builder(){
- return new MailsBuilder();
- }
- static class MailsBuilder{
- private final MailMessage mailMessage = new MailMessage();
- public MailsBuilder() {
- }
- public MailMessage build(){
- return mailMessage;
- }
-
- public MailsBuilder setMailAddress(List mailAddress) {
- mailMessage.mailAddress = mailAddress;
- return this;
- }
-
- public MailsBuilder setMailAddress(String mailAddress){
- if ( mailMessage.mailAddress == null){
- mailMessage.mailAddress = new ArrayList<>();
- }
- mailMessage.mailAddress.add(mailAddress);
- return this;
- }
-
- public MailsBuilder setTitle(String title){
- mailMessage.title = title;
- return this;
- }
-
- public MailsBuilder setBody(String body){
- mailMessage.body = body;
- return this;
- }
-
- public MailsBuilder setCc(List cc){
- mailMessage.cc = cc;
- return this;
- }
-
- public MailsBuilder setCc(String cc){
- if (mailMessage.cc == null){
- mailMessage.cc = new ArrayList<>();
- }
- mailMessage.cc.add(cc);
- return this;
- }
-
- public MailsBuilder setBcc(List bcc){
- mailMessage.bcc = bcc;
- return this;
- }
-
- public MailsBuilder setBcc(String bcc){
- if (mailMessage.bcc == null){
- mailMessage.bcc = new ArrayList<>();
- }
- mailMessage.bcc.add(bcc);
- return this;
- }
-
- public MailsBuilder setFiles(Map files){
- if (mailMessage.files == null){
- mailMessage.files = new HashMap<>();
- }
- mailMessage.files.putAll(files);
- return this;
- }
-
- public MailsBuilder setFiles(String fileName,String filePath){
- if (mailMessage.files == null){
- mailMessage.files = new HashMap<>();
- }
- mailMessage.files.put(fileName,filePath);
- return this;
- }
-
- public MailsBuilder setHtmlPath(String htmlPath){
- mailMessage.htmlPath = htmlPath;
- return this;
- }
-
- public MailsBuilder setHtmlInputStream(InputStream htmlInputStream){
- mailMessage.htmlInputStream = htmlInputStream;
- return this;
- }
-
- public MailsBuilder setHtmlValues(String key, String value){
- if (mailMessage.files == null){
- mailMessage.files = new HashMap<>();
- }
- mailMessage.htmlValues.put(key,value);
- return this;
- }
-
- public MailsBuilder setHtmlValues(Map htmlValues){
- if (mailMessage.files == null){
- mailMessage.files = new HashMap<>();
- }
- mailMessage.htmlValues.putAll(htmlValues);
- return this;
- }
- }
}
diff --git a/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailBuild.java b/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailBuild.java
index 23450063..c922530b 100644
--- a/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailBuild.java
+++ b/sms4j-Email-plugin/sms4j-Email-core/src/main/java/org/dromara/email/core/service/MailBuild.java
@@ -72,10 +72,10 @@ public class MailBuild {
}
public static MailClient build(MailSmtpConfig config) throws MessagingException {
- return MailService.NewMailService(new MailBuild(config));
+ return MailService.instance(new MailBuild(config));
}
public static MailClient build(MailSmtpConfig config,Blacklist blacklist)throws MessagingException {
- return MailService.NewMailService(new MailBuild(config,blacklist));
+ return MailService.instance(new MailBuild(config,blacklist));
}
/**
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 95f593a2..6c00d4e2 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
@@ -1,5 +1,6 @@
package org.dromara.email.core.service;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.lang.UUID;
@@ -7,13 +8,11 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import org.dromara.email.api.MailClient;
-import org.dromara.email.api.Parameter;
import org.dromara.email.comm.constants.FileConstants;
import org.dromara.email.comm.entity.MailMessage;
import org.dromara.email.comm.errors.MailException;
import org.dromara.email.comm.utils.HtmlUtil;
import org.dromara.email.comm.utils.ZipUtils;
-import org.dromara.email.core.ReflectUtil;
import javax.activation.DataHandler;
import javax.activation.DataSource;
@@ -28,8 +27,6 @@ import javax.mail.util.ByteArrayDataSource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -44,211 +41,28 @@ public class MailService implements MailClient {
this.mailBuild = mailBuild;
}
- public static MailClient NewMailService(MailBuild mailBuild) {
+ public static MailClient instance(MailBuild mailBuild) {
return new MailService(mailBuild);
}
@Override
- public void sendMail(String mailAddress, String title, String body) {
- sendEmail(mailAddress, title, body, null);
- }
-
- @Override
- public void sendMail(List mailAddress, String title, String body) {
- sendEmail(mailAddress, title, body, null);
- }
-
- @Override
- public void sendEmail(String mailAddress, String title, String body, Map files) {
- sendEmail(Collections.singletonList(mailAddress), title, body, files);
- }
-
- @Override
- public void sendEmail(List mailAddress, String title, String body, Map files) {
- sendEmail(mailAddress, title, body, null, null, files);
- }
-
- @Override
- public void sendEmail(String mailAddress, String title, String body, List cc, List bcc, Map files) {
- sendEmail(Collections.singletonList(mailAddress), title, body, cc, bcc, files);
- }
-
- @Override
- public void sendEmail(MailMessage mailMessage) {
- sendEmail(mailMessage.getMailAddress(),
+ public void send(MailMessage mailMessage) {
+ List html;
+ if (mailMessage.getHtmlInputStream() == null) {
+ html = HtmlUtil.readHtml(mailMessage.getHtmlPath());
+ } else {
+ html = HtmlUtil.readHtml(mailMessage.getHtmlInputStream());
+ }
+ send(mailMessage.getMailAddress(),
mailMessage.getTitle(),
mailMessage.getBody(),
+ html,
+ mailMessage.getHtmlValues(),
+ mailMessage.getZipName(),
+ mailMessage.getFiles(),
mailMessage.getCc(),
- mailMessage.getBcc(),
- mailMessage.getFiles());
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String htmlName, Map parameter) {
- sendHtml(Collections.singletonList(mailAddress), title, htmlName, parameter);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String htmlName, Map parameter) {
- sendHtml(mailAddress, title, htmlName, parameter, null);
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String htmlName, Parameter parameter) {
- sendHtml(Collections.singletonList(mailAddress), title, htmlName, parameter);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String htmlName, Parameter parameter) {
- sendHtml(mailAddress, title, htmlName, ReflectUtil.getValues(parameter));
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String htmlName, Map parameter, Map files) {
- sendHtml(mailAddress, title, "", htmlName, parameter, files);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String htmlName, Map parameter, Map files) {
- sendHtml(mailAddress, title, "", htmlName, parameter, files);
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String htmlName, Parameter parameter, Map files) {
- sendHtml(mailAddress, title, htmlName, ReflectUtil.getValues(parameter), files);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String htmlName, Parameter parameter, Map files) {
- sendHtml(mailAddress, title, htmlName, ReflectUtil.getValues(parameter), files);
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String body, String htmlName, Map parameter) {
- sendHtml(mailAddress, title, body, htmlName, parameter, null);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String body, String htmlName, Map parameter) {
- sendHtml(mailAddress, title, body, htmlName, parameter, null);
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String body, String htmlName, Parameter parameter) {
- sendHtml(Collections.singletonList(mailAddress), title, body, htmlName, parameter);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String body, String htmlName, Parameter parameter) {
- sendHtml(mailAddress, title, body, htmlName, parameter, null);
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String body, String htmlName, Map parameter, Map files) {
- sendHtml(Collections.singletonList(mailAddress), title, body, htmlName, parameter, files);
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String body, String htmlName, Parameter parameter, String zipName, Map files) {
- sendHtml(mailAddress, title, body, htmlName, ReflectUtil.getValues(parameter), zipName, files);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String body, String htmlName, Map parameter, Map files) {
- send(mailAddress, title, body, HtmlUtil.readHtml(htmlName), parameter, files, null, null);
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String body, String htmlName, Parameter parameter, Map files) {
- sendHtml(Collections.singletonList(mailAddress), title, body, htmlName, parameter, files);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String body, String htmlName, Parameter parameter, Map files) {
- sendHtml(mailAddress, title, body, htmlName, ReflectUtil.getValues(parameter), files);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String body, InputStream html, Map parameter, Map files) {
- send(mailAddress, title, body, HtmlUtil.readHtml(html), parameter, files, null, null);
- }
-
- @Override
- public void sendHtml(List mailAddress, String title, String body, InputStream html, Parameter parameter, Map files) {
- sendHtml(mailAddress, title, body, html, ReflectUtil.getValues(parameter), files);
- }
-
- @Override
- public void sendHtml(List mailAddress,
- String title,
- String body,
- InputStream html,
- List cc,
- List bcc,
- Map parameter,
- Map files) {
- send(mailAddress, title, body, HtmlUtil.readHtml(html), parameter, files, cc, bcc);
- }
-
- @Override
- public void sendHtml(List mailAddress,
- String title,
- String body,
- InputStream html,
- List cc,
- List bcc,
- Parameter parameter,
- Map files) {
- send(mailAddress, title, body, HtmlUtil.readHtml(html), ReflectUtil.getValues(parameter), files, cc, bcc);
- }
-
- @Override
- public void sendHtml(List mailAddress,
- String title,
- String body,
- String html,
- List cc,
- List bcc,
- Map parameter,
- Map files) {
- send(mailAddress, title, body, HtmlUtil.readHtml(html), parameter, files, cc, bcc);
- }
-
- @Override
- public void sendHtml(List mailAddress,
- String title,
- String body,
- String html,
- List cc,
- List bcc,
- Parameter parameter,
- Map files) {
- send(mailAddress, title, body, HtmlUtil.readHtml(html), ReflectUtil.getValues(parameter), files, cc, bcc);
- }
-
- @Override
- public void sendHtml(MailMessage mailMessage) {
- if (mailMessage.getHtmlInputStream() == null) {
- sendHtml(mailMessage.getMailAddress(),
- mailMessage.getTitle(),
- mailMessage.getBody(),
- mailMessage.getHtmlPath(),
- mailMessage.getCc(),
- mailMessage.getBcc(),
- mailMessage.getHtmlValues(),
- mailMessage.getFiles()
- );
- } else {
- sendHtml(mailMessage.getMailAddress(),
- mailMessage.getTitle(),
- mailMessage.getBody(),
- mailMessage.getHtmlInputStream(),
- mailMessage.getCc(),
- mailMessage.getBcc(),
- mailMessage.getHtmlValues(),
- mailMessage.getFiles()
- );
- }
+ mailMessage.getBcc()
+ );
}
private void forFiles(Multipart multipart, Map files) throws MessagingException {
@@ -261,7 +75,7 @@ public class MailService implements MailClient {
if (v.startsWith("http")) {
byte[] bytes = HttpUtil.downloadBytes(v);
source = new ByteArrayDataSource(bytes, FileConstants.IO_FILE_TYPE);
- }else {
+ } else {
source = new FileDataSource(v);
}
messageBodyPart.setDataHandler(new DataHandler(source));
@@ -287,72 +101,18 @@ public class MailService implements MailClient {
String body,
List html,
Map parameter,
+ String zipName,
Map files,
List cc,
List bcc) {
try {
- Message message = messageBuild(mailAddress, title, body, html, parameter, files, cc, bcc);
+ Message message = messageBuild(mailAddress, title, body, html, parameter, zipName, cc, bcc, files);
Transport.send(message);
logger.info("邮件发送成功!^_^");
- } catch (MessagingException e) {
+ } catch (MessagingException | IOException e) {
// 防止 maxRetries 数值小于0带来的其他问题
- if (mailBuild.getMaxRetries() > 0){
- ReSendList(mailAddress,
- title,
- body,
- html,
- parameter,
- files,
- cc,
- bcc);
- } else {
- logger.warning(e.getMessage());
- throw new MailException(e);
- }
- }
- }
-
- @Override
- public void sendEmail(List mailAddress, String title, String body, List cc, List bcc, Map files) {
- try {
- Message message = messageBuild(mailAddress, title, body, cc, bcc, files);
- Transport.send(message);
- logger.info("邮件发送成功!^_^");
- } catch (MessagingException e) {
if (mailBuild.getMaxRetries() > 0) {
- ReSendList(mailAddress, title, body, cc, bcc, files);
- } else {
- logger.warning(e.getMessage());
- throw new MailException(e);
- }
- }
- }
-
- @Override
- public void sendEmail(String mailAddress, String title, String body, String zipName, Map files) {
- try {
- Message message = messageBuild(mailAddress, title, body, zipName, files);
- Transport.send(message);
- logger.info("邮件发送成功!^_^");
- } catch (MessagingException | IOException e) {
- if (mailBuild.getMaxRetries() > 1) {
- ReSend(mailAddress, title, body, zipName, files);
- } else {
- logger.warning(e.getMessage());
- throw new MailException(e);
- }
- }
- }
-
- @Override
- public void sendHtml(String mailAddress, String title, String body, String htmlName, Map parameter, String zipName, Map files) {
- try {
- Message message = messageBuild(mailAddress, title, body, htmlName, parameter, zipName, files);
- Transport.send(message);
- logger.info("邮件发送成功!^_^");
- } catch (MessagingException | IOException e) {
- if (mailBuild.getMaxRetries() > 1) {
- ReSend(mailAddress, title, body, htmlName, parameter, zipName, files);
+ ReSendList(mailAddress, title, body, html, parameter, zipName, files, cc, bcc);
} else {
logger.warning(e.getMessage());
throw new MailException(e);
@@ -361,13 +121,14 @@ public class MailService implements MailClient {
}
private void ReSendList(List mailAddress,
- String title,
- String body,
- List html,
- Map parameter,
- Map files,
- List cc,
- List bcc) {
+ String title,
+ String body,
+ List html,
+ Map parameter,
+ String zipName,
+ Map files,
+ List cc,
+ List bcc) {
int maxRetries = mailBuild.getMaxRetries();
int retryCount = 1; // 初始值为1;则while循环中少发送一次,最后一次发送在判断 retryCount >= maxRetries 这里。
boolean retryOnFailure = true;
@@ -376,14 +137,14 @@ public class MailService implements MailClient {
try {
logger.warning("邮件第 {" + retryCount + "} 次重新发送");
Message message;
- if (html != null || parameter != null){
- message = messageBuild(mailAddress, title, body, html, parameter, files, cc, bcc);
+ if (html != null || parameter != null) {
+ message = messageBuild(mailAddress, title, body, html, parameter, zipName, cc, bcc, files);
} else {
- message = messageBuild(mailAddress, title, body, cc, bcc, files);
+ message = messageBuild(mailAddress, title, body, null, null, zipName, cc, bcc, files);
}
Transport.send(message);
retryOnFailure = false; // 发送成功,停止重试
- } catch (MessagingException e) {
+ } catch (MessagingException | IOException e) {
retryCount++;
try {
// 间隔秒数
@@ -397,180 +158,42 @@ public class MailService implements MailClient {
if (retryCount >= maxRetries && retryOnFailure) {
try {
Message message;
- if (html != null || parameter != null){
- message = messageBuild(mailAddress, title, body, html, parameter, files, cc, bcc);
+ if (html != null || parameter != null) {
+ message = messageBuild(mailAddress, title, body, html, parameter, null, cc, bcc, files);
} else {
- message = messageBuild(mailAddress, title, body, cc, bcc, files);
+ message = messageBuild(mailAddress, title, body, null, null, null, cc, bcc, files);
}
Transport.send(message);
- } catch (MessagingException e) {
+ } catch (MessagingException | IOException e) {
throw new MailException(e);
}
}
}
- public void ReSendList(List mailAddress,
- String title,
- String body,
- List cc,
- List bcc,
- Map files) {
- ReSendList(mailAddress, title, body, null, null, files, cc, bcc);
- }
-
- private void ReSend(String mailAddress,
- String title,
- String body,
- String htmlName,
- Map parameter,
- String zipName,
- Map files) {
- int maxRetries = mailBuild.getMaxRetries();
- int retryCount = 1; // 初始值为1;则while循环中少发送一次,最后一次发送在判断 retryCount >= maxRetries 这里。
- boolean retryOnFailure = true;
-
- while (retryOnFailure && retryCount < maxRetries) {
- try {
- logger.warning("邮件第 {" + retryCount + "} 次重新发送");
- if (htmlName != null || parameter != null){
- Message message = messageBuild(mailAddress, title, body, htmlName, parameter, zipName, files);
- Transport.send(message);
- } else {
- Message message = messageBuild(mailAddress, title, body, zipName, files);
- Transport.send(message);
- }
- retryOnFailure = false; // 发送成功,停止重试
- } catch (MessagingException e) {
- retryCount++;
- try {
- // 间隔秒数
- TimeUnit.SECONDS.sleep(mailBuild.getRetryInterval());
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- }
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- if (retryCount >= maxRetries && retryOnFailure) {
- try {
- if (htmlName != null || parameter != null){
- Message message = messageBuild(mailAddress, title, body, htmlName, parameter, zipName, files);
- Transport.send(message);
- } else {
- Message message = messageBuild(mailAddress, title, body, zipName, files);
- Transport.send(message);
- }
- } catch (MessagingException e) {
- throw new MailException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- private void ReSend(String mailAddress,
- String title,
- String body,
- String zipName,
- Map files) {
- ReSend(mailAddress, title, body, null, null, zipName, files);
- }
-
- // messageBuild 方法重载
- private Message messageBuild(List mailAddress,
- String title,
- String body,
- List html,
- Map parameter,
- Map files,
- List cc,
- List bcc) throws MessagingException {
- Message message = mailBuild.getMessage();
- message.setRecipients(Message.RecipientType.TO, mailBuild.eliminate(mailAddress));
- message.setSubject(title);
-
- Multipart multipart = new MimeMultipart("alternative");
- // 读取模板并进行变量替换
- List strings = HtmlUtil.replacePlaceholder(html, parameter);
- // 拼合HTML数据
- String htmlData = HtmlUtil.pieceHtml(strings);
- if (!body.isEmpty()) {
- // 创建文本正文部分
- MimeBodyPart textPart = new MimeBodyPart();
- textPart.setText(body);
- multipart.addBodyPart(textPart);
- }
- // 添加附件
- if (files != null && files.size() != 0) {
- forFiles(multipart, files);
- }
-
- MimeBodyPart htmlPart = new MimeBodyPart();
- htmlPart.setContent(htmlData, "text/html;charset=UTF-8");
- addCC(cc, bcc, message);
- multipart.addBodyPart(htmlPart);
- message.setContent(multipart);
- return message;
- }
-
public Message messageBuild(List mailAddress,
String title,
String body,
+ List html,
+ Map parameter,
+ String zipName,
List cc,
List bcc,
- Map files) throws MessagingException {
+ Map files) throws MessagingException, IOException {
Message message = mailBuild.getMessage();
message.setRecipients(Message.RecipientType.TO, mailBuild.eliminate(mailAddress));
message.setSubject(title);
- if (StrUtil.isNotBlank(body)) {
- message.setText(body);
- }
- if (files != null && files.size() != 0) {
- Multipart multipart = new MimeMultipart();
- forFiles(multipart, files);
- message.setContent(multipart);
- }
- addCC(cc, bcc, message);
- return message;
- }
-
- public Message messageBuild(String mailAddress,
- String title,
- String body,
- String zipName,
- Map files) throws MessagingException, IOException {
- Message message = mailBuild.getMessage();
- message.setRecipients(Message.RecipientType.TO, mailBuild.eliminate(Convert.toList(String.class, mailAddress)));
- message.setSubject(title);
- if (StrUtil.isNotBlank(body)) {
- message.setText(body);
- }
- if (files != null && files.size() != 0) {
- Multipart multipart = new MimeMultipart();
- zipFiles(multipart, zipName, files);
- message.setContent(multipart);
- }
- return message;
- }
-
- public Message messageBuild(String mailAddress,
- String title,
- String body,
- String htmlName,
- Map parameter,
- String zipName,
- Map files) throws MessagingException, IOException {
- Message message = mailBuild.getMessage();
- message.setRecipients(Message.RecipientType.TO, mailBuild.eliminate(Convert.toList(String.class, mailAddress)));
- message.setSubject(title);
Multipart multipart = new MimeMultipart("alternative");
- //读取模板并进行变量替换
- List strings = HtmlUtil.replacePlaceholder(HtmlUtil.readHtml(htmlName), parameter);
- //拼合HTML数据
- String htmlData = HtmlUtil.pieceHtml(strings);
+ if (CollUtil.isNotEmpty(html) && MapUtil.isNotEmpty(parameter)) {
+ //读取模板并进行变量替换
+ List strings = HtmlUtil.replacePlaceholder(html, parameter);
+ //拼合HTML数据
+ String htmlData = HtmlUtil.pieceHtml(strings);
+ MimeBodyPart htmlPart = new MimeBodyPart();
+ htmlPart.setContent(htmlData, "text/html;charset=UTF-8");
+ multipart.addBodyPart(htmlPart);
+ }
+
if (StrUtil.isNotBlank(body)) {
// 创建文本正文部分
MimeBodyPart textPart = new MimeBodyPart();
@@ -578,21 +201,26 @@ public class MailService implements MailClient {
multipart.addBodyPart(textPart);
}
//添加附件
- if (MapUtil.isNotEmpty(files)) {
+ if (MapUtil.isNotEmpty(files) && StrUtil.isNotBlank(zipName)) {
zipFiles(multipart, zipName, files);
+ } else {
+ if (MapUtil.isNotEmpty(files)) {
+ forFiles(multipart, files);
+ message.setContent(multipart);
+ }
+ }
+ if (CollUtil.isNotEmpty(cc) || CollUtil.isNotEmpty(bcc)) {
+ addCC(cc, bcc, message);
}
- MimeBodyPart htmlPart = new MimeBodyPart();
- htmlPart.setContent(htmlData, "text/html;charset=UTF-8");
- multipart.addBodyPart(htmlPart);
message.setContent(multipart);
return message;
}
private void addCC(List cc, List bcc, Message message) throws MessagingException {
- if (cc != null && cc.size() > 0) {
+ if (CollUtil.isNotEmpty(cc)) {
message.addRecipients(Message.RecipientType.CC, mailBuild.eliminate(cc));
}
- if (bcc != null && bcc.size() > 0) {
+ if (CollUtil.isNotEmpty(bcc)) {
message.addRecipients(Message.RecipientType.BCC, mailBuild.eliminate(bcc));
}
}
From 9ed0c9633e0ca4fc726cf20fb3b2c6febd4260cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Sat, 2 Sep 2023 00:08:10 +0800
Subject: [PATCH 2/4] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=82=AE?=
=?UTF-8?q?=E4=BB=B6=E5=9C=B0=E5=9D=80=E4=BE=BF=E4=BA=8E=E4=BD=BF=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/org/dromara/email/comm/entity/MailMessage.java | 8 ++++++--
.../java/org/dromara/email/core/service/MailService.java | 2 +-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
index 59eff79b..24d54c4a 100644
--- a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
+++ b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
@@ -1,5 +1,7 @@
package org.dromara.email.comm.entity;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
import lombok.Builder;
import lombok.Getter;
@@ -16,7 +18,7 @@ public class MailMessage {
/**
* 收件人地址
*/
- private List mailAddress;
+ private String mailAddress;
/**
* 邮件主题
@@ -63,5 +65,7 @@ public class MailMessage {
*/
private Map files;
-
+ public List getMailAddressList() {
+ return Convert.toList(String.class, mailAddress);
+ }
}
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 6c00d4e2..5eb5018f 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
@@ -53,7 +53,7 @@ public class MailService implements MailClient {
} else {
html = HtmlUtil.readHtml(mailMessage.getHtmlInputStream());
}
- send(mailMessage.getMailAddress(),
+ send(mailMessage.getMailAddressList(),
mailMessage.getTitle(),
mailMessage.getBody(),
html,
From 999c7a34a8679f210cb56a565110657c801b7313 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Sat, 2 Sep 2023 00:22:32 +0800
Subject: [PATCH 3/4] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20MailMessage?=
=?UTF-8?q?=20=E5=AE=9E=E4=BD=93=E6=94=AF=E6=8C=81=E5=A4=9A=E7=B1=BB?=
=?UTF-8?q?=E5=9E=8B=20=E6=94=B6=E4=BB=B6=E4=BA=BA=E5=8F=82=E6=95=B0?=
=?UTF-8?q?=E4=BE=BF=E4=BA=8E=E4=BD=BF=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../org/dromara/email/comm/entity/MailMessage.java | 8 +++++---
.../org/dromara/email/core/service/MailService.java | 11 ++++++++++-
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
index 24d54c4a..b4d06be7 100644
--- a/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
+++ b/sms4j-Email-plugin/sms4j-Email-comm/src/main/java/org/dromara/email/comm/entity/MailMessage.java
@@ -20,6 +20,11 @@ public class MailMessage {
*/
private String mailAddress;
+ /**
+ * 收件人地址多人(优先使用)
+ */
+ private List mailAddressList;
+
/**
* 邮件主题
*/
@@ -65,7 +70,4 @@ public class MailMessage {
*/
private Map files;
- public List getMailAddressList() {
- return Convert.toList(String.class, mailAddress);
- }
}
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 5eb5018f..e40cdf47 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
@@ -53,7 +53,16 @@ public class MailService implements MailClient {
} else {
html = HtmlUtil.readHtml(mailMessage.getHtmlInputStream());
}
- send(mailMessage.getMailAddressList(),
+ List address;
+ if (CollUtil.isEmpty(mailMessage.getMailAddressList())) {
+ if (StrUtil.isBlank(mailMessage.getMailAddress())) {
+ throw new MailException("收件人地址");
+ }
+ address = CollUtil.newArrayList(mailMessage.getMailAddress());
+ } else {
+ address = mailMessage.getMailAddressList();
+ }
+ send(address,
mailMessage.getTitle(),
mailMessage.getBody(),
html,
From bcb80a2493e05cac258006da65f66efb195d6086 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?=
<15040126243@163.com>
Date: Sat, 2 Sep 2023 00:24:37 +0800
Subject: [PATCH 4/4] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20MailMessage?=
=?UTF-8?q?=20=E5=AE=9E=E4=BD=93=E6=94=AF=E6=8C=81=E5=A4=9A=E7=B1=BB?=
=?UTF-8?q?=E5=9E=8B=20=E6=94=B6=E4=BB=B6=E4=BA=BA=E5=8F=82=E6=95=B0?=
=?UTF-8?q?=E4=BE=BF=E4=BA=8E=E4=BD=BF=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/org/dromara/email/core/service/MailService.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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 e40cdf47..4eeabc0b 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
@@ -56,7 +56,7 @@ public class MailService implements MailClient {
List address;
if (CollUtil.isEmpty(mailMessage.getMailAddressList())) {
if (StrUtil.isBlank(mailMessage.getMailAddress())) {
- throw new MailException("收件人地址");
+ throw new MailException("收件人地址不能为空!");
}
address = CollUtil.newArrayList(mailMessage.getMailAddress());
} else {