From 588933a73362dd21d916e78bad9316e78298eaf8 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 23 Apr 2021 09:52:52 +0800 Subject: [PATCH] add customProperty --- CHANGELOG.md | 3 ++- .../cn/hutool/extra/mail/MailAccount.java | 20 ++++++++------- .../cn/hutool/extra/mail/MailAccountTest.java | 14 ++++++----- .../java/cn/hutool/extra/mail/MailTest.java | 25 +++++++++---------- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1abee88ba..c6d5a06c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ------------------------------------------------------------------------------------------------------------- -# 5.6.4 (2021-04-22) +# 5.6.4 (2021-04-23) ### 🐣新特性 * 【core 】 DatePattern补充DateTimeFormatter(pr#308@Gitee) @@ -11,6 +11,7 @@ * 【core 】 BeanUtil增加edit方法(issue#I3J6BG@Gitee) * 【db 】 Column中加入columnDef字段默认值(issue#I3J6BG@Gitee) * 【core 】 BeanUtil增加copyToList方法(issue#1526@Github) +* 【extra 】 MailAccount增加customProperty可以用户自定义属性(pr#317@Gitee) ### 🐞Bug修复 * 【db 】 修复SQL分页时未使用别名导致的错误,同时count时取消order by子句(issue#I3IJ8X@Gitee) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/mail/MailAccount.java b/hutool-extra/src/main/java/cn/hutool/extra/mail/MailAccount.java index d22a95235..925550241 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/mail/MailAccount.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/mail/MailAccount.java @@ -39,9 +39,6 @@ public class MailAccount implements Serializable { public static final String[] MAIL_SETTING_PATHS = new String[]{"config/mail.setting", "config/mailAccount.setting", "mail.setting"}; - // 允许使用自定义属性 - private final Map customProperty = new HashMap<>(); - /** * SMTP服务器域名 */ @@ -116,6 +113,11 @@ public class MailAccount implements Serializable { */ private long connectionTimeout; + /** + * 自定义的其他属性,此自定义属性会覆盖默认属性 + */ + private final Map customProperty = new HashMap<>(); + // -------------------------------------------------------------- Constructor start /** @@ -477,6 +479,7 @@ public class MailAccount implements Serializable { * 获取自定义属性列表 * * @return 自定义参数列表 + * @since 5.6.4 */ public Map getCustomProperty() { return customProperty; @@ -485,12 +488,13 @@ public class MailAccount implements Serializable { /** * 设置自定义属性,如mail.smtp.ssl.socketFactory * - * @param key 属性名 - * @param value 属性值 + * @param key 属性名,空白被忽略 + * @param value 属性值, null被忽略 * @return this + * @since 5.6.4 */ public MailAccount setCustomProperty(String key, Object value) { - if (ObjectUtil.isNotNull(key) && ObjectUtil.isNotNull(value)) { + if (StrUtil.isNotBlank(key) && ObjectUtil.isNotNull(value)) { this.customProperty.put(key, value); } return this; @@ -542,9 +546,7 @@ public class MailAccount implements Serializable { } // 补充自定义属性,允许自定属性覆盖已经设置的值 - for (String key : customProperty.keySet()) { - p.put(key, customProperty.get(key)); - } + p.putAll(this.customProperty); return p; } diff --git a/hutool-extra/src/test/java/cn/hutool/extra/mail/MailAccountTest.java b/hutool-extra/src/test/java/cn/hutool/extra/mail/MailAccountTest.java index 754641a3f..48a233892 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/mail/MailAccountTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/mail/MailAccountTest.java @@ -2,6 +2,7 @@ package cn.hutool.extra.mail; import com.sun.mail.util.MailSSLSocketFactory; import org.junit.Assert; +import org.junit.Ignore; import org.junit.Test; import java.security.GeneralSecurityException; @@ -22,14 +23,15 @@ public class MailAccountTest { Assert.assertTrue(account.isSslEnable()); } - /* - 测试案例:使用QQ邮箱、AOL邮箱,如果不改SocketFactory实例,会报错(unable to find valid certification path to requested target), - hutool mail中仅提供了'mail.smtp.socketFactory.class'属性,但是没提供'mail.smtp.ssl.socketFactory'属性 - 参见 com.sun.mail.util.SocketFetcher.getSocket(java.lang.String, int, java.util.Properties, java.lang.String, boolean) - - 已经测试通过 + /** + * 测试案例:使用QQ邮箱、AOL邮箱,如果不改SocketFactory实例,会报错(unable to find valid certification path to requested target), + * hutool mail中仅提供了'mail.smtp.socketFactory.class'属性,但是没提供'mail.smtp.ssl.socketFactory'属性 + * 参见 com.sun.mail.util.SocketFetcher.getSocket(java.lang.String, int, java.util.Properties, java.lang.String, boolean) + *

+ * 已经测试通过 */ @Test + @Ignore public void customPropertyTest() throws GeneralSecurityException { MailAccount mailAccount = new MailAccount(); mailAccount.setFrom("xxx@xxx.com"); diff --git a/hutool-extra/src/test/java/cn/hutool/extra/mail/MailTest.java b/hutool-extra/src/test/java/cn/hutool/extra/mail/MailTest.java index 6700c5866..6f35818b7 100644 --- a/hutool-extra/src/test/java/cn/hutool/extra/mail/MailTest.java +++ b/hutool-extra/src/test/java/cn/hutool/extra/mail/MailTest.java @@ -1,36 +1,35 @@ package cn.hutool.extra.mail; +import cn.hutool.core.io.FileUtil; +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.Properties; -import org.junit.Assert; -import org.junit.Ignore; -import org.junit.Test; - -import cn.hutool.core.io.FileUtil; - /** * 邮件发送测试 * @author looly * */ public class MailTest { - + @Test @Ignore public void sendWithFileTest() { MailUtil.send("hutool@foxmail.com", "测试", "

邮件来自Hutool测试

", true, FileUtil.file("d:/测试附件文本.txt")); } - + @Test @Ignore public void sendWithLongNameFileTest() { //附件名长度大于60时的测试 MailUtil.send("hutool@foxmail.com", "测试", "

邮件来自Hutool测试

", true, FileUtil.file("d:/6-LongLong一阶段平台建设周报2018.3.12-3.16.xlsx")); } - + @Test @Ignore public void sendWithImageTest() { @@ -38,13 +37,13 @@ public class MailTest { map.put("testImage", FileUtil.getInputStream("f:/test/me.png")); MailUtil.sendHtml("hutool@foxmail.com", "测试", "

邮件来自Hutool测试

", map); } - + @Test @Ignore public void sendHtmlTest() { MailUtil.send("hutool@foxmail.com", "测试", "

邮件来自Hutool测试

", true); } - + @Test @Ignore public void sendByAccountTest() { @@ -55,9 +54,9 @@ public class MailTest { account.setFrom("hutool@yeah.net"); account.setUser("hutool"); account.setPass("q1w2e3"); - MailUtil.send(account, "914104645@qq.com", "测试", "

邮件来自Hutool测试

", true); + MailUtil.send(account, "hutool@foxmail.com", "测试", "

邮件来自Hutool测试

", true); } - + @Test public void mailAccountTest() { MailAccount account = new MailAccount();