java基于freemarker發(fā)送郵件肝集,模板郵件瞻坝,圖片郵件

技術(shù):springboot2 + freemarker +郵件

運(yùn)行環(huán)境:idea + maven + jdk1.8?

概述

基于freemarker發(fā)送模板郵件,圖片郵件包晰,文本郵件等湿镀】晃基于ftl模板,郵件樣式美觀勉痴。

詳細(xì)

一赫模,前言

FreeMarker是一種模板引擎:即一種基于模板并且要改變的數(shù)據(jù),并同時(shí)生成輸出文本(HTML網(wǎng)頁(yè)蒸矛,電子郵件瀑罗,配置文件,源代碼等)的通用工具雏掠。它不是面向最終用戶的斩祭,而是一個(gè)Java的類庫(kù),是一款程序員可以嵌入他們所開(kāi)發(fā)產(chǎn)品的組件乡话。【百度百科】

二摧玫,效果預(yù)覽

三,程序?qū)崿F(xiàn)

1绑青,項(xiàng)目結(jié)構(gòu)圖

2诬像,相關(guān)參數(shù)配置

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">彈簧:</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

??郵件:</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????#設(shè)置郵箱主機(jī)</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????主持人:smtp.ym.163.com</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????#設(shè)置用戶名</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????用戶名:lnbld@bld365.com</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????#這里不是注冊(cè)時(shí)的密碼,而是生成的授權(quán)碼</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????密碼:“ bld123456”</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????端口:465</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????默認(rèn)編碼:UTF-8</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????特性:</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

??????郵件:</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

????????smtp:</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">

??????????#設(shè)置是否需要認(rèn)證闸婴,如果為true坏挠,那么用戶名和密碼就必須</font></font><font></font>

??????????auth:?true<font></font>

??????????starttls:<font></font>

????????????#加密通訊,true開(kāi)啟邪乍,false不開(kāi)啟<font></font>

????????????enable:?true<font></font>

????????????#是否必須通過(guò)使用加密通訊進(jìn)行通訊降狠,true開(kāi)啟,false不開(kāi)啟<font></font>

????????????required:?true<font></font>

??????????socketFactory:<font></font>

????????????port:?465<font></font>

????????????class:?javax.net.ssl.SSLSocketFactory<font></font>

????????????fallback:?false

3庇楞,測(cè)試類

packagecom.sylujia.mail;<font></font>

<font></font>

importcom.sylujia.mail.service.MailService;<font></font>

importlombok.extern.slf4j.Slf4j;<font></font>

importorg.junit.Test;<font></font>

importorg.junit.runner.RunWith;<font></font>

importorg.springframework.beans.factory.annotation.Autowired;<font></font>

importorg.springframework.boot.test.context.SpringBootTest;<font></font>

importorg.springframework.test.context.junit4.SpringRunner;<font></font>

<font></font>

importjava.util.HashMap;<font></font>

importjava.util.Map;<font></font>

<font></font>

@Slf4j<font></font>

@RunWith(SpringRunner.class)<font></font>

@SpringBootTest<font></font>

publicclassMailServiceTest?{<font></font>

<font></font>

????@Autowired<font></font>

????privateMailService?mailService;<font></font>

<font></font>

????@Test<font></font>

????publicvoidsendTemplateMailTest(){<font></font>

????????Map<String,?Object>?mailContentMap?=?newHashMap<>();<font></font>

????????mailContentMap.put("contactName",?"sylujia");<font></font>

????????mailContentMap.put("platformAddr",?"https://www.baidu.com");<font></font>

????????mailContentMap.put("loginName",?"sylujia");<font></font>

????????mailContentMap.put("loginPswd",?"123456");<font></font>

????????mailContentMap.put("payPswd",?"123456");<font></font>

????????mailContentMap.put("contactMail",?"xxx@163.com");<font></font>

????????mailContentMap.put("contactPhone",?"13144112255");<font></font>

????????try{<font></font>

????????????mailService.sendTemplateMail("系統(tǒng)賬號(hào)開(kāi)通",?"xxx@163.com","AccountOpenMail.ftl",?mailContentMap);<font></font>

????????}?catch(Exception?e)?{<font></font>

????????????log.error("賬號(hào)開(kāi)通郵件發(fā)送失敯衽洹:{}",?mailContentMap?,?e);<font></font>

????????}<font></font>

????????log.info("郵件發(fā)送成功");<font></font>

????}<font></font>

<font></font>

<font></font>

<font></font>

}

4,郵件服務(wù)

packagecom.sylujia.mail.service.impl;<font></font>

<font></font>

importcom.sylujia.mail.service.MailService;<font></font>

importfreemarker.template.Configuration;<font></font>

importlombok.extern.slf4j.Slf4j;<font></font>

importorg.springframework.beans.factory.annotation.Autowired;<font></font>

importorg.springframework.beans.factory.annotation.Value;<font></font>

importorg.springframework.mail.javamail.JavaMailSender;<font></font>

importorg.springframework.mail.javamail.MimeMessageHelper;<font></font>

importorg.springframework.stereotype.Service;<font></font>

importorg.springframework.ui.freemarker.FreeMarkerTemplateUtils;<font></font>

<font></font>

importjavax.mail.internet.MimeMessage;<font></font>

importjava.util.Map;<font></font>

<font></font>

@Slf4j<font></font>

@Service<font></font>

publicclassMailServiceImpl?implementsMailService?{<font></font>

<font></font>

????@Autowired<font></font>

????privateJavaMailSender?mailSender;<font></font>

<font></font>

????@Value("${spring.mail.username}")<font></font>

????privateString?from;<font></font>

<font></font>

????@Override<font></font>

????publicbooleansendTemplateMail(String?title,?String?toUser,?String?templateName,?Map<String,?Object>?params)?{<font></font>

????????try{<font></font>

<font></font>

????????????MimeMessage?mimeMessage?=?mailSender.createMimeMessage();<font></font>

????????????MimeMessageHelper?helper?=?newMimeMessageHelper(mimeMessage,?true);<font></font>

????????????//?發(fā)件人<font></font>

????????????helper.setFrom(from);<font></font>

????????????//收件人<font></font>

????????????helper.setTo(toUser);<font></font>

????????????//郵件標(biāo)題<font></font>

????????????helper.setSubject(title);<font></font>

<font></font>

????????????Configuration?configuration?=?newConfiguration(Configuration.VERSION_2_3_28);<font></font>

????????????configuration.setClassForTemplateLoading(this.getClass(),?"/templates");<font></font>

????????????String?text?=?FreeMarkerTemplateUtils.processTemplateIntoString(configuration.getTemplate(templateName),?params);<font></font>

????????????////?text:內(nèi)容姐刁,true:為HTML郵件(false則為普通文本郵件)<font></font>

????????????helper.setText(text,?true);<font></font>

????????????mailSender.send(mimeMessage);<font></font>

<font></font>

????????}?catch(Exception?e)?{<font></font>

????????????log.error("sendTemplateMail?發(fā)送模板郵件錯(cuò)誤芥牌,",?e);<font></font>

????????????thrownewRuntimeException(e);<font></font>

????????}<font></font>

????????returntrue;<font></font>

????}<font></font>

<font></font>

}

四,總結(jié)

郵件發(fā)送本地(Windows環(huán)境)能測(cè)試成功聂使,部署到linux服務(wù)器后一直報(bào)錯(cuò)?

1個(gè)com.sun.mail.util.MailConnectException:?Couldn't?connect?to?host異常解決

重要信息失敗的消息:com.sun.mail.util.MailConnectException:無(wú)法連接到主機(jī)和22壁拉。首先想到的是linux的端口22沒(méi)有開(kāi)通,遂聯(lián)系相關(guān)人員開(kāi)通柏靶,但是可能出于安全考慮沒(méi)有同意開(kāi)通弃理。?

沒(méi)辦法,只能更換端口了屎蜓,需要對(duì)配置進(jìn)行修改痘昌,這里我換的465端口,具體看上面的配置信息。

如果注意的是云服務(wù)器辆苔,例如阿里云算灸,騰訊云等。需要注意驻啤,他們出于安全考慮可能會(huì)限制郵件端口菲驴,這個(gè)需要咨詢,實(shí)在不行就改用465 ssl端口發(fā)送郵件骑冗。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赊瞬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子贼涩,更是在濱河造成了極大的恐慌巧涧,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遥倦,死亡現(xiàn)場(chǎng)離奇詭異谤绳,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谊迄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門闷供,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人统诺,你說(shuō)我怎么就攤上這事∫杉螅” “怎么了粮呢?”我有些...
    開(kāi)封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)钞艇。 經(jīng)常有香客問(wèn)我啄寡,道長(zhǎng),這世上最難降的妖魔是什么哩照? 我笑而不...
    開(kāi)封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任挺物,我火速辦了婚禮,結(jié)果婚禮上飘弧,老公的妹妹穿的比我還像新娘识藤。我一直安慰自己,他們只是感情好次伶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布痴昧。 她就那樣靜靜地躺著,像睡著了一般冠王。 火紅的嫁衣襯著肌膚如雪赶撰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音豪娜,去河邊找鬼餐胀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瘤载,可吹牛的內(nèi)容都是我干的否灾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼惕虑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼坟冲!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起溃蔫,我...
    開(kāi)封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤健提,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后伟叛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體私痹,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年统刮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了紊遵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侥蒙,死狀恐怖暗膜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鞭衩,我是刑警寧澤学搜,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站论衍,受9級(jí)特大地震影響瑞佩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坯台,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一炬丸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜒蕾,春花似錦稠炬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至瑟匆,卻和暖如春闽坡,著一層夾襖步出監(jiān)牢的瞬間栽惶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工疾嗅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留外厂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓代承,卻偏偏與公主長(zhǎng)得像汁蝶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子论悴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容