springboot仍然在狂速發展,才五個多月沒有關注,現在看官網已經到1.5.3.RELEASE版本了。準備慢慢在寫寫springboot相關的文章,本篇文章使用springboot最新版本1.5.3進行開發。
發送郵件應該是網站的必備功能之一,什麼注冊驗證,忘記密碼或者是給使用者發送營銷資訊。最早期的時候我們會使用JavaMail相關api來寫發送郵件的相關代碼,後來spring退出了JavaMailSender更加簡化了郵件發送的過程,在之後springboot對此進行了封裝就有了現在的spring-boot-starter-mail,本章文章的介紹主要來自于此包。
簡單使用
1、pom包配置
pom包裡面添加spring-boot-starter-mail包引用
2、在application.properties中添加郵箱配置
3、編寫mailService,這裡隻提出實作類。
4、編寫test類進行測試
至此一個簡單的文本發送就完成了。
加點料
但是在正常使用的過程中,我們通常在郵件中加入圖檔或者附件來豐富郵件的内容,下面講介紹如何使用springboot來發送豐富的郵件。
發送html格式郵件
其它都不變在MailService添加sendHtmlMail方法.
在測試類中建構html内容,測試發送
發送帶附件的郵件
在MailService添加sendAttachmentsMail方法.
添加多個附件可以使用多條 helper.addAttachment(fileName,file)
在測試類中添加測試方法
發送帶靜态資源的郵件
郵件中的靜态資源一般就是指圖檔,在MailService添加sendAttachmentsMail方法.
添加多個圖檔可以使用多條 和 helper.addInline(rscId,res)來實作
到此所有的郵件發送服務已經完成了。
郵件系統
上面發送郵件的基礎服務就這些了,但是如果我們要做成一個郵件系統的話還需要考慮以下幾個問題:
郵件模闆
我們會經常收到這樣的郵件:
其中隻有neo這個使用者名在變化,其它郵件内容均不變,如果每次發送郵件都需要手動拼接的話會不夠優雅,并且每次模闆的修改都需要改動代碼的話也很不友善,是以對于這類郵件需求,都建議做成郵件模闆來處理。模闆的本質很簡單,就是在模闆中替換變化的參數,轉換為html字元串即可,這裡以 thymeleaf為例來示範。
1、pom中導入thymeleaf的包
2、在resorces/templates下建立emailTemplate.html
3、解析模闆并發送
發送失敗
因為各種原因,總會有郵件發送失敗的情況,比如:郵件發送過于頻繁、網絡異常等。在出現這種情況的時候,我們一般會考慮重新重試發送郵件,會分為以下幾個步驟來實作:
1、接收到發送郵件請求,首先記錄請求并且入庫。
2、調用郵件發送接口發送郵件,并且将發送結果記錄入庫。
3、啟動定時系統掃描時間段内,未發送成功并且重試次數小于3次的郵件,進行再次發送
異步發送
很多時候郵件發送并不是我們主業務必須關注的結果,比如通知類、提醒類的業務可以允許延時或者失敗。這個時候可以采用異步的方式來發送郵件,加快主交易執行速度,在實際項目中可以采用MQ發送郵件相關參數,監聽到消息隊列之後啟動發送郵件。