發送郵件應該是網站的必備功能之一,什麼注冊驗證,忘記密碼或者是給使用者發送營銷資訊。最早期的時候我們會使用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><img src='cid:" + rscid + "' ></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>
作者:純潔的微笑
版權歸作者所有,轉載請注明出處