SpringBoot中使用Freemarker構建郵件模板

本文是vhr系列的第十三篇,項目地址:https://github.com/lenve/vhr html

當郵件內容比較簡單的時候,咱們可能一行字符串就能表達全部意思了,可是大部分狀況下,咱們的郵件內容都比較複雜須要用HTML來組織郵件內容,並且HTML中的數據還要動態修改,這時,最好的解決方案莫過於Freemarker了。有的小夥伴看到Freemarker就疑惑了,你不是號稱先後端分離麼,怎麼還用上Freemarker了?freemarker使用的最多的場景就是作頁面模板,可是它不只能夠作HTML模板(大部分狀況下它都扮演了這個角色),還能夠作XML、郵件等的模板,本文咱們就來看看做爲郵件模板,Freemarker要怎麼使用。ios

引入依賴

第一步固然是引入freemarker依賴了,以下:git

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
</dependency>

建立郵件模板

接下來就是根據咱們想要的HTML樣式,建立一個郵件模板,這個模板是一個ftl文件,以下:github

<p>你好,${name}童鞋,歡迎加入XXX你們庭!您的入職信息以下:</p>
<table border="1" cellspacing="0">
    <tr><td><strong style="color: #F00">工號</strong></td><td>${workID}</td></tr>
    <tr><td><strong style="color: #F00">合同期限</strong></td><td>${contractTerm}年</td></tr>
    <tr><td><strong style="color: #F00">合同起始日期</strong></td><td>${beginContract?string("yyyy-MM-dd")}</td></tr>
    <tr><td><strong style="color: #F00">合同截至日期</strong></td><td>${endContract?string("yyyy-MM-dd")}</td></tr>
    <tr><td><strong style="color: #F00">所屬部門</strong></td><td>${departmentName}</td></tr>
    <tr><td><strong style="color: #F00">職位</strong></td><td>${posName}</td></tr>
</table>
<p><strong style="color: #F00; font-size: 24px;">但願在將來的日子裏,攜手共進!</strong></p>

最終的顯示效果以下: web

圖片描述

這個樣式小夥伴能夠根據本身的需求靈活調整。有一個要注意的地方: 由於我已經先後端分離了,所以項目中的webapp目錄對我來講已經可有可無了,建立的意義不大,所以這個郵件模板我把它放在resources目錄下的ftl目錄下。數據庫

模板解析

有了模板,接下來我只須要向模板中傳入數據,並將模板ftl解析爲html便可,以下:編程

Configuration cfg = new Configuration(Configuration.VERSION_2_3_27);
cfg.setClassLoaderForTemplateLoading(ClassLoader.getSystemClassLoader(),"ftl");
Template emailTemplate = cfg.getTemplate("email.ftl");
StringWriter out = new StringWriter();
emailTemplate.process(employee,out);

不像在SSM框架中配置freemarker那樣麻煩,這裏就幾行代碼: axios

1.根據所使用的freemarker版本號建立一個Configuration對象
2.設置模板路徑,模板路徑的設置方法有好幾個,我這裏由於放在了resources目錄下,所以使用了setClassLoaderForTemplateLoading方法
3.建立模板,經過process方法進行渲染,渲染後的html將放到out這個變量中,而後咱們在郵件中直接將之發送出去便可。 後端

OK,通過以上步驟,咱們就順利的生成了一封郵件。完整過程小夥伴能夠star咱們的vhr項目並仔細研究。 app

本系列其餘文章:

1.SpringBoot+Vue先後端分離,使用SpringSecurity完美處理權限問題(一)
2.SpringBoot+Vue先後端分離,使用SpringSecurity完美處理權限問題(二)
3.SpringSecurity中密碼加鹽與SpringBoot中異常統一處理
4.axios請求封裝和異常統一處理
5.權限管理模塊中動態加載Vue組件
6.SpringBoot+Vue先後端分離,使用SpringSecurity完美處理權限問題(六)
7.vhr部門管理數據庫設計與編程
8.使用MyBatis輕鬆實現遞歸查詢與存儲過程調用
9.ElementUI中tree控件踩坑記
10.SpringBoot中自定義參數綁定
11.SpringBoot中使用POI,快速實現Excel導入導出
12.SpringBoot中發送QQ郵件

關注公衆號,能夠及時接收到最新文章:

圖片描述

相關文章
相關標籤/搜索