html表單模板(html表格模板)
?背景
靈魂拷問 1:還在為新項目工具類搬遷而煩惱?
靈魂拷問 2:還在為項目中工具類維護而煩惱?
??簡述
Hutool它是一個 Java 工具集類庫,包含了很多靜態(tài)方法的封裝:流處理、時間日期處理、正則處理、加解密處理、文件處理、集合處理等,可以說是項目中幾乎所有 XxxxUtil 的替代品,它可以使你更多的關(guān)注代碼邏輯,優(yōu)雅的寫出高效代碼,避免 “復(fù)制粘貼,改改再戰(zhàn)”。
”???組件
??常用
??只列舉部分方法,詳細可查看源碼學(xué)習(xí)?。?!
1、核心工具集
1.1、日期時間工具 - DateUtil
日期轉(zhuǎn)換再常用不過了,字符串轉(zhuǎn)日期格式、日期格式轉(zhuǎn)指定字符串格式、獲取當(dāng)前系統(tǒng)日期、時間差
// 自定義日期格式轉(zhuǎn)化
展開全文
String dateStr = "2017-03-01";
Date date = DateUtil.parse(dateStr, "yyyy-MM-dd");
1.2、農(nóng)歷日期 - ChineseDate
提供了生肖、天干地支、傳統(tǒng)節(jié)日等方法。
//通過公歷構(gòu)建
ChineseDate date = new ChineseDate(DateUtil.parseDate("2020-01-25"));
// 一月
date.getChineseMonth();
// 正月
date.getChineseMonthName();
// 初一
date.getChineseDay();
// 庚子
date.getCyclical();
// 生肖:鼠
date.getChineseZodiac();
// 傳統(tǒng)節(jié)日(部分支持,逗號分隔):春節(jié)
date.getFestivals();
// 庚子鼠年 正月初一
date.toString();
1.3、計時器工具 - TimeInterval
計算方法或過程執(zhí)行的時間,支持分組計時,方便對比時間
TimeInterval timer = DateUtil.timer();
//---------------------------------
//-------這是執(zhí)行過程
//---------------------------------
timer.interval();//花費毫秒數(shù)
timer.intervalRestart();//返回花費時間,并重置開始時間
timer.intervalMinute();//花費分鐘數(shù)
1.4、文件類型判斷 - FileTypeUtil
在文件上傳時,有時候我們需要判斷文件類型。但是又不能簡單的通過擴展名來判斷(防止惡意腳本等通過上傳到服務(wù)器上),于是我們需要在服務(wù)端通過讀取文件的首部幾個二進制位來判斷常用的文件類型。
File file = FileUtil.file("d:/test.jpg");
String type = FileTypeUtil.getType(file);
//輸出 jpg則說明確實為jpg文件
Console.log(type);
1.5、符串工具 - StrUtil
這個工具的用處類似于 Apache Commons Lang 中的 StringUtil,字符串判空操作就不再累述,StrUtil 只做增強:sub、removePrefix、removeSuffix
// 去掉字符串的后綴,例如去個文件名的擴展名。
String fileName = StrUtil.removeSuffix("pretty_girl.jpg", ".jpg") //fileName - pretty_girl
1.6、16 進制工具 - HexUtil
16 進制一般針對無法顯示的一些二進制進行顯示,常用于: 1、圖片的字符串表現(xiàn)形式 2、加密解密 3、編碼轉(zhuǎn)換
String str = "我是一個字符串";
String hex = HexUtil.encodeHexStr(str, CharsetUtil.CHARSET_UTF_8);
//hex是:
//e68891e698afe4b880e4b8aae5ad97e7aca6e4b8b2
String decodedStr = HexUtil.decodeHexStr(hex);
//解碼后與str相同
1.7、Escape 工具 - EscapeUtil
轉(zhuǎn)義和反轉(zhuǎn)義工具類 Escape / Unescape。escape 采用 ISO Latin 字符集對指定的字符串進行編碼。所有的空格符、標(biāo)點符號、特殊字符以及其他非 ASCII 字符都將被轉(zhuǎn)化成 % xx 格式的字符編碼 (xx 等于該字符在字符集表里面的編碼的 16 進制數(shù)字)。此類中的方法對應(yīng) Javascript 中的 escape() 函數(shù)和 unescape() 函數(shù)。
1.8、URL 工具 - URLUtil
URL(Uniform Resource Locator)中文名為統(tǒng)一資源定位符,有時也被俗稱為網(wǎng)頁地址。表示為互聯(lián)網(wǎng)上的資源,如網(wǎng)頁或者 FTP 地址。在 Java 中,也可以使用 URL 表示 Classpath 中的資源(Resource)地址。
? URLUtil.normalize 標(biāo)準(zhǔn)化化 URL 鏈接。對于不帶 http:// 頭的地址做簡單補全。
String url = "http://www.hutool.cn//aaa/bbb";
// 結(jié)果為:http://www.hutool.cn/aaa/bbb
String normalize = URLUtil.normalize(url);
url = "http://www.hutool.cn//aaa/\\bbb?a=1b=2";
// 結(jié)果為:http://www.hutool.cn/aaa/bbb?a=1b=2
normalize = URLUtil.normalize(url);
? URLUtil.encode 封裝URLEncoder.encode,將需要轉(zhuǎn)換的內(nèi)容(ASCII 碼形式之外的內(nèi)容),用十六進制表示法轉(zhuǎn)換出來,并在之前加上 % 開頭。
String body = "366466 - 副本.jpg";
// 結(jié)果為:366466%20-%20%E5%89%AF%E6%9C%AC.jpg
String encode = URLUtil.encode(body);
1.9、枚舉工具 - EnumUtil
枚舉(enum)算一種 “語法糖”,是指一個經(jīng)過排序的、被打包成一個單一實體的項列表。一個枚舉的實例可以使用枚舉項列表中任意單一項的值。枚舉在各個語言當(dāng)中都有著廣泛的應(yīng)用,通常用來表示諸如顏色、方式、類別、狀態(tài)等等數(shù)目有限、形式離散、表達又極為明確的量。Java 從 JDK5 開始,引入了對枚舉的支持。
//定義枚舉
public enum TestEnum{
TEST1("type1"), TEST2("type2"), TEST3("type3");
private TestEnum(String type) {
this.type = type;
}
private String type;
public String getType() {
return this.type;
}
}
// 獲取枚舉類中所有枚舉對象的name列表
ListString names = EnumUtil.getNames(TestEnum.class); //結(jié)果:[TEST1, TEST2, TEST3]
// 獲得枚舉類中各枚舉對象下指定字段的值
ListObject types = EnumUtil.getFieldValues(TestEnum.class, "type"); //結(jié)果:[type1, type2, type3]
1.10、數(shù)字工具 - NumberUtil
數(shù)字工具針對數(shù)學(xué)運算做工具性封裝
// 格式化為指定字符串
long c = 299792458;//光速
String format = NumberUtil.decimalFormat(",###", c);//299,792,458
1.11、數(shù)組工具 - ArrayUtil
數(shù)組工具類主要針對原始類型數(shù)組和泛型數(shù)組相關(guān)方案進行封裝
// 數(shù)組判空
int[] a = {};
int[] b = null;
ArrayUtil.isEmpty(a);
ArrayUtil.isEmpty(b);
1.12、隨機工具 - RandomUtil
RandomUtil 主要針對 JDK 中 Random 對象做封裝,嚴格來說,Java 產(chǎn)生的隨機數(shù)都是偽隨機數(shù),因此 Hutool 封裝后產(chǎn)生的隨機結(jié)果也是偽隨機結(jié)果。不過這種隨機結(jié)果對于大多數(shù)情況已經(jīng)夠用。
// 例如我們想產(chǎn)生一個[10, 100)的隨機數(shù),則:
int c = RandomUtil.randomInt(10, 100);
1.13、唯一 ID 工具 - IdUtil
在分布式環(huán)境中,唯一 ID 生成應(yīng)用十分廣泛,生成方法也多種多樣,Hutool 針對一些常用生成策略做了簡單封裝。包括 UUID 、 ObjectId(MongoDB) 、 Snowflake(Twitter)
// 生成的UUID是帶-的字符串,類似于:a5c8a5e8-df2b-4706-bea4-08d0939410e3
String uuid = IdUtil.randomUUID();
// 生成的是不帶-的字符串,類似于:b17f24ff026d40949c85a24f4f375d42
String simpleUUID = IdUtil.simpleUUID();
1.14、正則工具 - ReUtil
在文本處理中,正則表達式幾乎是全能的,但是 Java 的正則表達式有時候處理一些事情還是有些繁瑣
// 給定字符串是否匹配給定正則
String content = "ZZZaaabbbccc中文1234";
boolean isMatch = ReUtil.isMatch("\\w+[\u4E00-\u9FFF]+\\d+", content);
Assert.assertTrue(isMatch);
1.15、身份證工具 - IdcardUtil
支持大陸 15 位、18 位身份證,港澳臺 10 位身份證
String ID_18 = "321083197812162119";
String ID_15 = "150102880730303";
//是否有效
boolean valid = IdcardUtil.isValidCard(ID_18);
boolean valid15 = IdcardUtil.isValidCard(ID_15);
//轉(zhuǎn)換
String convert15To18 = IdcardUtil.convert15To18(ID_15);
//年齡
DateTime date = DateUtil.parse("2017-04-10");
int age = IdcardUtil.getAgeByIdCard(ID_18, date);
int age2 = IdcardUtil.getAgeByIdCard(ID_15, date);
//生日
String birth = IdcardUtil.getBirthByIdCard(ID_18);
String birth2 = IdcardUtil.getBirthByIdCard(ID_15);
//省份
String province = IdcardUtil.getProvinceByIdCard(ID_18);
String province2 = IdcardUtil.getProvinceByIdCard(ID_15);
1.16、信息脫敏工具 - DesensitizedUtil
在數(shù)據(jù)處理或清洗中,可能涉及到很多隱私信息的脫敏工作,因此 Hutool 針對常用的信息封裝了一些脫敏方法。
// 以身份證號碼為例:5***************1X
DesensitizedUtil.idCardNum("51343620000320711X", 1, 2);
1.17、社會信用代碼工具 - CreditCodeUtil
法人和其他組織統(tǒng)一社會信用代碼制度,相當(dāng)于讓法人和其他組織擁有了一個全國統(tǒng)一的 “身份證號”,由一下五部分組成: 第一部分:登記管理部門代碼 1 位 (數(shù)字或大寫英文字母) 第二部分:機構(gòu)類別代碼 1 位 (數(shù)字或大寫英文字母) 第三部分:登記管理機關(guān)行政區(qū)劃碼 6 位 (數(shù)字) 第四部分:主體標(biāo)識碼(組織機構(gòu)代碼)9 位 (數(shù)字或大寫英文字母) 第五部分:校驗碼 1 位 (數(shù)字或大寫英文字母)
// 校驗是否為社會信用代碼
String testCreditCode = "91310110666007217T";
// true
CreditCodeUtil.isCreditCode(testCreditCode);
1.18、字段驗證器 - Validator
驗證給定字符串是否滿足指定條件,一般用在表單字段驗證里。
// 驗證是否為郵箱
boolean isEmail = Validator.isEmail("loolly@gmail.com")
// 如無法滿足需求,可通過該正則驗證
Validator.isMactchRegex("需要驗證字段的正則表達式", "被驗證內(nèi)容")
1.19、Bean 工具 - BeanUtil
Bean 工具類主要是針對這些 setXXX 和 getXXX 方法進行操作,比如將 Bean 對象轉(zhuǎn)為 Map 等等
// 使用Map填充bean
HashMapString, Object map = CollUtil.newHashMap();
map.put("name", "Joe");
map.put("age", 12);
map.put("openId", "DFDFSDFWERWER");
SubPerson person = BeanUtil.fillBeanWithMap(map, new SubPerson(), false);
1.20、集合工具 - CollUtil
這個工具主要增加了對數(shù)組、集合類的操作。
// 將集合轉(zhuǎn)換為字符串
String[] col= new String[]{"a","b","c","d","e"};
ListString colList = CollUtil.newArrayList(col);
String str = CollUtil.join(colList, "#"); //str - a#b#c#d#e
1.21、列表工具 - ListUtil
List 在集合中中使用最為頻繁,因此新版本的 Hutool 中針對 List 單獨封裝了工具方法。
// 列表截取
final ListInteger of = ListUtil.of(1, 2, 3, 4);
// [3, 4]
final ListInteger sub = ListUtil.sub(of, 2, 4);
// 對子列表操作不影響原列表
sub.remove(0);
1.22、Unicode 編碼轉(zhuǎn)換工具 - UnicodeUtil
此工具主要針對類似于 \\u4e2d\\u6587 這類 Unicode 字符做一些特殊轉(zhuǎn)換。
// 字符串轉(zhuǎn)Unicode 第二個參數(shù)true表示跳過ASCII字符(只跳過可見字符)
String s = UnicodeUtil.toUnicode("aaa123中文", true); //結(jié)果aaa123\\u4e2d\\u6587
// Unicode轉(zhuǎn)字符串
String res = UnicodeUtil.toString("aaa\\U4e2d\\u6587\\u111\\urtyu\\u0026"); //結(jié)果aaa中文\\u111\\urtyu
1.23、Map 工具 - MapUtil
MapUtil 是針對 Map 的一一列工具方法的封裝,包括 getXXX 的快捷值轉(zhuǎn)換方法。
// reverse Map的鍵和值互換
MapString, String map = MapUtil.newHashMap();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
map.put("d", "4");
MapString, String map2 = MapUtil.reverse(map);
結(jié)果為:
{
"1": "a",
"2": "b",
"3": "c",
"4": "d",
}
1.24、 編碼解碼
編碼是用 64(2 的 6 次方)個 ASCII 字符來表示 256(2 的 8 次方)個 ASCII 字符,也就是三位二進制數(shù)組經(jīng)過編碼后變?yōu)樗奈坏?ASCII 字符顯示,長度比原來增加 1/3。
String a = "倫家是一個非常長的字符串";
// 5Lym5a625piv5LiA5Liq6Z2e5bi46ZW/55qE5a2X56ym5Liy
String encode = .encode(a);
// 還原為a
String decodeStr = .decodeStr(encode);
1.25、數(shù)學(xué)相關(guān) - MathUtil
此工具是 NumberUtil 的一個補充,NumberUtil 偏向于簡單數(shù)學(xué)計算的封裝,MathUtil 偏向復(fù)雜數(shù)學(xué)計算。
? ?
1.26、圖片工具 - ImgUtil
針對 awt 中圖片處理進行封裝,這些封裝包括:縮放、裁剪、轉(zhuǎn)為黑白、加水印等操作。
// 圖片類型轉(zhuǎn)換png-jpg
ImgUtil.convert(FileUtil.file("e:/test2.png"), FileUtil.file("e:/test2Convert.jpg"));
// 彩色轉(zhuǎn)黑白
ImgUtil.gray(FileUtil.file("d:/logo.png"), FileUtil.file("d:/result.png"));
// 添加文字水印
ImgUtil.pressText(
FileUtil.file("e:/pic/face.jpg"),
FileUtil.file("e:/pic/test2_result.png"),
"版權(quán)所有", Color.WHITE, //文字
new Font("黑體", Font.BOLD, 100), //字體
0, //x坐標(biāo)修正值。 默認在中間,偏移量相對于中間偏移
0, //y坐標(biāo)修正值。 默認在中間,偏移量相對于中間偏移
0.8f//透明度:alpha 必須是范圍 [0.0, 1.0] 之內(nèi)(包含邊界值)的一個浮點數(shù)字
);
1.27、網(wǎng)絡(luò)工具 - NetUtil
在日常開發(fā)中,網(wǎng)絡(luò)連接這塊兒必不可少。日常用到的一些功能,隱藏掉部分 IP 地址、絕對相對路徑的轉(zhuǎn)換等等。
String ip= "127.0.0.1";
long iplong = 2130706433L;
// 根據(jù)long值獲取ip v4地址
String ip= NetUtil.longToIpv4(iplong);
// 根據(jù)ip地址計算出long型的數(shù)據(jù)
long ip= NetUtil.ipv4ToLong(ip);
// 檢測本地端口可用性
boolean result= NetUtil.isUsableLocalPort(6379);
// 是否為有效的端口
boolean result= NetUtil.isValidPort(6379);
// 隱藏掉IP地址
String result =NetUtil.hideIpPart(ip);
2、JSON
2.1、JSON 工具 - JSONUtil
針對 JSONObject 和 JSONArray 的靜態(tài)快捷方法集合
// JSON字符串解析
String html = "{\"name\":\"Something must have been changed since you leave\"}";
JSONObject jsonObject = JSONUtil.parseObj(html);
jsonObject.getStr("name");
// XML字符串轉(zhuǎn)JSON
String s = "sfzh123/sfzhsfz456/sfznameaa/namegender1/gender";
JSONObject json = JSONUtil.parseFromXml(s);
json.get("sfzh");
json.get("name");
// JSON轉(zhuǎn)XML
final JSONObject put = JSONUtil.createObj().set("aaa", "你好").set("鍵2", "test");
// aaa你好/aaa鍵2test/鍵2
final String s = JSONUtil.toXmlStr(put);
// JSON轉(zhuǎn)Bean
String json = "{\"ADT\":[[{\"BookingCode\":[\"N\",\"N\"]}]]}";
Price price = JSONUtil.toBean(json, Price.class);
price.getADT().get(0).get(0).getBookingCode().get(0);
3、加密解密
3.1、加密解密工具 - SecureUtil
SecureUtil 主要針對常用加密算法構(gòu)建快捷方式,還有提供一些密鑰生成的快捷工具方法。
// AES對稱加解密
String content = "test中文";
// 隨機生成密鑰
byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();
// 構(gòu)建
AES aes = SecureUtil.aes(key);
// 加密
byte[] encrypt = aes.encrypt(content);
// 解密
byte[] decrypt = aes.decrypt(encrypt);
// 加密為16進制表示
String encryptHex = aes.encryptHex(content);
// 解密為字符串
String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
4、HTTP 客戶端
4.1、Http 客戶端工具類 - HttpUtil
基于 JDK 的 HttpUrlConnection 封裝完成,完整支持 https、代理和文件上傳、以及 URL 參數(shù)編解碼等。
GET 請求栗子:
// 最簡單的HTTP請求,可以自動通過header等信息判斷編碼,不區(qū)分HTTP和HTTPS
String result1= HttpUtil.get("https://www.baidu.com");
// 當(dāng)無法識別頁面編碼的時候,可以自定義請求頁面的編碼
String result2= HttpUtil.get("https://www.baidu.com", CharsetUtil.CHARSET_UTF_8);
//可以單獨傳入http參數(shù),這樣參數(shù)會自動做URL編碼,拼接在URL中
HashMapString, Object paramMap = new HashMap();
paramMap.put("city", "北京");
String result3= HttpUtil.get("https://www.baidu.com", paramMap);
POST 請求栗子:
HashMapString, Object paramMap = new HashMap();
paramMap.put("city", "北京");
String result= HttpUtil.post("https://www.baidu.com", paramMap);
文件上傳栗子:
HashMapString, Object paramMap = new HashMap();
//文件上傳只需將參數(shù)中的鍵指定(默認file),值設(shè)為文件對象即可,對于使用者來說,文件上傳與普通表單提交并無區(qū)別
paramMap.put("file", FileUtil.file("D:\\face.jpg"));
String result= HttpUtil.post("https://www.baidu.com", paramMap);
4.2、HTML 工具類 - HtmlUtil
如我們在使用爬蟲爬取 HTML 頁面后,需要對返回頁面的 HTML 內(nèi)容做一定處理,比如去掉指定標(biāo)簽(例如廣告欄等)、去除 JS、去掉樣式等等,這些操作都可以使用 HtmlUtil 完成。
// 轉(zhuǎn)義HTML特殊字符
String html = "htmlbody123'123'/body/html";
// 結(jié)果為:htmlbody123'123'/body/html
String escape = HtmlUtil.escape(html);
// 還原被轉(zhuǎn)義的HTML特殊字符
String escape = "htmlbody123'123'/body/html";
// 結(jié)果為:htmlbody123'123'/body/html
String unescape = HtmlUtil.unescape(escape);
// 清除指定HTML標(biāo)簽和被標(biāo)簽包圍的內(nèi)容
String str = "preimg src=\"xxx/dfdsfds/test.jpg\"";
// 結(jié)果為:pre
String result = HtmlUtil.removeHtmlTag(str, "img");
// 清除所有HTML標(biāo)簽,但是保留標(biāo)簽內(nèi)的內(nèi)容
String str = "prediv class=\"test_div\"\r\n\t\tdfdsfdsfdsf\r\n/divdiv class=\"test_div\"BBBB/div";
// 結(jié)果為:pre\r\n\t\tdfdsfdsfdsf\r\nBBBB
String result = HtmlUtil.cleanHtmlTag(str);
// 清除指定HTML標(biāo)簽,不包括內(nèi)容
String str = "prediv class=\"test_div\"abc/div";
// 結(jié)果為:preabc
String result = HtmlUtil.unwrapHtmlTag(str, "div");
// 過濾HTML文本,防止XSS攻擊
String html = "alert/alert";
// 結(jié)果為:""
String filter = HtmlUtil.filter(html);
5、擴展工具集
5.1、拼音工具 - PinyinUtil
引入拼音庫(TinyPinyin、JPinyin、Pinyin4j)其中任意一個引擎,從而實現(xiàn)獲取漢語拼音、拼音首字母
// 獲取拼音:"ni hao"
String pinyin = PinyinUtil.getPinyin("你好", " ");
// 獲取拼音首字母:"h, s, d, y, g"
String result = PinyinUtil.getFirstLetter("H是第一個", ", ");
5.2、Emoji 工具 - EmojiUtil
引入表情依賴,實現(xiàn)表情轉(zhuǎn)義、表情轉(zhuǎn) html、轉(zhuǎn)義的別名轉(zhuǎn)表情
!-- 表情依賴 --
dependency
groupIdcom.vdurmont/groupId
artifactIdemoji-java/artifactId
version4.0.0/version
/dependency
// 轉(zhuǎn)義Emoji字符
String alias = EmojiUtil.toAlias("??");//:smile:
// 將轉(zhuǎn)義的別名轉(zhuǎn)為Emoji字符
String emoji = EmojiUtil.toUnicode(":smile:");//??
// 將字符串中的Unicode Emoji字符轉(zhuǎn)換為HTML表現(xiàn)形式
String alias = EmojiUtil.toHtml("??");//??
5.3、二維碼工具 - QrCodeUtil
引入 zxing 庫依賴(理論上你引入的版本應(yīng)與此版本一致或比這個版本新),實現(xiàn)二維碼的生成(二維碼可附帶 logo 圖標(biāo))以及識別二維碼
!-- zxing庫依賴 --
dependency
groupIdcom.google.zxing/groupId
artifactIdcore/artifactId
version3.3.3/version
/dependency
// 自定義參數(shù)生成指定url對應(yīng)的二維碼到文件
QrConfig config = new QrConfig(300, 300);
// 設(shè)置邊距,既二維碼和背景之間的邊距
config.setMargin(3);
// 設(shè)置前景色,既二維碼顏色(青色)
config.setForeColor(Color.CYAN.getRGB());
// 設(shè)置背景色(灰色)
config.setBackColor(Color.GRAY.getRGB());
// 生成二維碼到文件,也可以到流
QrCodeUtil.generate("http://hutool.cn/", config, FileUtil.file("e:/qrcode.jpg"));
// 識別二維碼(decode - "http://hutool.cn/" )
String decode = QrCodeUtil.decode(FileUtil.file("d:/qrcode.jpg"));
5.4、郵件工具 - MailUtil
Hutool 對所有第三方都是可選依賴,因此在使用 MailUtil 時需要自行引入第三方依賴。支持群發(fā)、帶附件、自定義郵件服務(wù)器
!-- java-mail依賴 --
!-- 說明 com.sun.mail是javax.mail升級后的版本,新版本包名做了變更。 --
dependency
groupIdcom.sun.mail/groupId
artifactIdjavax.mail/artifactId
version1.6.2/version
/dependency
// 發(fā)送普通文本郵件,最后一個參數(shù)可選是否添加多個附件
MailUtil.send("hutool@foxmail.com", "測試", "郵件來自Hutool測試", false);
// 發(fā)送HTML格式的郵件并附帶附件,最后一個參數(shù)可選是否添加多個附件:
MailUtil.send("hutool@foxmail.com", "測試", "h1郵件來自Hutool測試/h1", true, FileUtil.file("d:/aaa.xml"));
// 群發(fā)郵件,可選HTML或普通文本,可選多個附件:
ArrayListString tos = CollUtil.newArrayList(
"person1@bbb.com",
"person2@bbb.com",
"person3@bbb.com",
"person4@bbb.com");
MailUtil.send(tos, "測試", "郵件來自Hutool群發(fā)測試", false);
官方文檔: https://www.hutool.cn/docs/#/
Github 地址: https://github.com/dromara/hutool
Gitee 地址: https://gitee.com/dromara/hutool
作者:京東零售 馬宏偉
來源:京東云開發(fā)者社區(qū) 轉(zhuǎn)載請注明來源
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。