當前位置:
首頁 > 最新 > 結合Spring發送郵件的四種正確姿勢,你知道幾種?

結合Spring發送郵件的四種正確姿勢,你知道幾種?

一 前言

測試所使用的環境

測試使用的環境是企業主流的SSM 框架即 SpringMVC+Spring+Mybatis。為了節省時間,我直接使用的是我上次的「SSM項目中整合Echarts開發」該項目已經搭建完成的SSM環境。


發送text格式的郵件

發送HTML格式的郵件

基於FreeMarker模板引擎發送郵件

基於Velocity模板引擎發送郵件

Github地址:https://github.com/Snailclimb/J2ee-Advanced。(說明:相關代碼都在ssm-echarts-demo 項目中)

你可以選擇直接下載或者直接在DOS窗口運行: 命令,這樣項目就被拷貝到你的電腦了。

然後選擇導入Maven項目即可(不懂Maven的可以自行百度學習).


既然要發送郵件,那麼你首先要提供一個能在第三方軟體上發送郵件功能的賬號。在這裡,我選擇的網易郵箱賬號。

我拿網易郵箱賬號舉例子,那麼我們如何才能讓你的郵箱賬號可以利用第三方發送郵件(這裡的第三方就是我們即將編寫的程序)。

大家應該清楚:客戶端和後台交互數據的時候用到了Http協議,那麼相應的,郵箱傳輸也有自己的一套協議,如SMTP,POP3,IMAP。


所以,我們第一步首先要去開啟這些服務,如下圖所示:

如果你未開啟該服務的話,運行程序會報如下錯誤(配置文件中配置的密碼是你的授權碼而不是你登錄郵箱的密碼,授權碼是你第三方登錄的憑證):


我們需要用到的發郵件的核心jar包,所以這裡好好介紹一下。

JavaMail是由Sun定義的一套收發電子郵件的API,不同的廠商可以提供自己的實現類。但它並沒有包含在JDK中,而是作為JavaEE的一部分。廠商所提供的JavaMail服務程序可以有選擇地實現某些郵件協議,常見的郵件協議包括:

SMTP:簡單郵件傳輸協議,用於發送電子郵件的傳輸協議;

POP3:用於接收電子郵件的標準協議;

IMAP:互聯網消息協議,是POP3的替代協議。

這三種協議都有對應SSL加密傳輸的協議,分別是SMTPS,POP3S和IMAPS。

我們如果要使用JavaMail的話,需要自己引用相應的jar包,如下圖所示:


下圖是除了pom.xml之外用到的其他所有配置文件

pom.xml

需要用到的jar包。

mail.properties

如果你的授權碼填寫錯誤的話,會報如下錯誤:

velocity.properties

applicationContext-email.xml


我這裡說是工具類,其實只是我自己做了簡單的封裝,實際項目使用的話,可能會需要根據需要簡單修改一下。

所有用到的類如下圖所示:


我在 方法中添加了一個 類型的變數type作為標誌,如果為ture就表示發送html格式的郵件否則直接發送text格式的郵件。實現起來很簡單,我們通過下面的判斷語句就可以實現了

效果:


下圖是我們用到的FreeMarker模板文件以及Velocity模板文件的位置。

我們通過 方法讀取freemarker模板,返回的格式如下圖所示:

其實就是HTML,然後我們就可以像前面發送HTML格式郵件的方式發送這端消息了。

email.ftl

效果:

不知道為啥,騰訊每次把我使用模板引擎發的郵件直接放到垃圾箱。大家如果遇到接收不到郵件,但是又沒報錯的情況,可以看看是不是到了自己郵箱的垃圾箱。


email.vm

效果:


上面我們總結了Spring發送郵件的四種正確姿勢,並且將核心代碼提供給了大家。代碼中有我很詳細的注釋,所以我對於代碼以及相關類的講解很少,感興趣的同學可以自行學習。最後,本項目Github地址:https://github.com/Snailclimb/J2ee-Advanced。

備註:實踐過程中如果遇到自己無法解決的問題可以添加我的微信。


Java-Guide: Java面試通關手冊(Java學習指南)。(star:1.8k)

Github地址:https://github.com/Snailclimb/Java-Guide

文檔定位:一個專門為Java後端工程師準備的開源文檔,相信不論你是Java新手還是已經成為一名Java工程師都能從這份文檔中收穫到一些東西。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 編程指南針 的精彩文章:

TAG:編程指南針 |