天天看點

springboot(十):郵件服務

發送郵件應該是網站的必備功能之一,什麼注冊驗證,忘記密碼或者是給使用者發送營銷資訊。最早期的時候我們會使用javamail相關api來寫發送郵件的相關代碼,後來spring退出了javamailsender更加簡化了郵件發送的過程,在之後springboot對此進行了封裝就有了現在的spring-boot-starter-mail,本章文章的介紹主要來自于此包。

pom包裡面添加spring-boot-starter-mail包引用

至此一個簡單的文本發送就完成了。

但是在正常使用的過程中,我們通常在郵件中加入圖檔或者附件來豐富郵件的内容,下面講介紹如何使用springboot來發送豐富的郵件。

其它都不變在mailservice添加sendhtmlmail方法.

在測試類中建構html内容,測試發送

在mailservice添加sendattachmentsmail方法.

添加多個附件可以使用多條 <code>helper.addattachment(filename, file)</code>

在測試類中添加測試方法

郵件中的靜态資源一般就是指圖檔,在mailservice添加sendattachmentsmail方法.

添加多個圖檔可以使用多條 <code>&lt;img src='cid:" + rscid + "' &gt;</code> 和 <code>helper.addinline(rscid, res)</code> 來實作

到此所有的郵件發送服務已經完成了。

上面發送郵件的基礎服務就這些了,但是如果我們要做成一個郵件系統的話還需要考慮以下幾個問題:

我們會經常收到這樣的郵件:

其中隻有neo這個使用者名在變化,其它郵件内容均不變,如果每次發送郵件都需要手動拼接的話會不夠優雅,并且每次模闆的修改都需要改動代碼的話也很不友善,是以對于這類郵件需求,都建議做成郵件模闆來處理。模闆的本質很簡單,就是在模闆中替換變化的參數,轉換為html字元串即可,這裡以<code>thymeleaf</code>為例來示範。

1、pom中導入thymeleaf的包

2、在resorces/templates下建立emailtemplate.html

3、解析模闆并發送

因為各種原因,總會有郵件發送失敗的情況,比如:郵件發送過于頻繁、網絡異常等。在出現這種情況的時候,我們一般會考慮重新重試發送郵件,會分為以下幾個步驟來實作:

1、接收到發送郵件請求,首先記錄請求并且入庫。

2、調用郵件發送接口發送郵件,并且将發送結果記錄入庫。

3、啟動定時系統掃描時間段内,未發送成功并且重試次數小于3次的郵件,進行再次發送

很多時候郵件發送并不是我們主業務必須關注的結果,比如通知類、提醒類的業務可以允許延時或者失敗。這個時候可以采用異步的方式來發送郵件,加快主交易執行速度,在實際項目中可以采用mq發送郵件相關參數,監聽到消息隊列之後啟動發送郵件。

<a href="https://github.com/ityouknow/spring-boot-starter/tree/master/spring-boot-mail">完整代碼在這裡</a>

參考:

<a href="http://blog.csdn.net/clementad/article/details/51833416">spring boot 發送郵件</a>

作者:純潔的微笑

版權歸作者所有,轉載請注明出處