JavaMail是SUN提供給廣大Java開發人員的一款郵件發送和接受的一款開源類庫,支持經常使用的郵件協議,如:SMTP、POP三、IMAP,開發人員使用JavaMail編寫郵件程序時,再也不須要考慮底層的通信細節如:Socket而是關注在邏輯層面。JavaMail能夠發送各類複雜MIME格式的郵件內容,注意JavaMail僅支持JDK4及以上版本。雖然JavaMail是JDK的API但它並無直接加入JDK中,因此咱們須要另外添加依賴,下面咱們開始講解本章的內容。html
將Java提供的JavaMail類庫與SpringBoot項目進行整合,而且簡單封裝下JavaMail類庫。git
本章項目無關Web相關內容,因此建立項目時選擇Jar形式建立,而且不須要預先導入依賴。項目結構以下圖1所示:spring
能夠看到上圖1內容,多餘的依賴並無添加,若是你選擇的是War項目也沒有關係名,那好,咱們接下來把咱們的主角JavaMail請出來吧,把對應的依賴添加到pom.xml配置文件內。以下圖2所示:框架
依賴咱們已經導入成功了,接下來咱們開始編寫JavaMail的封裝,我這裏簡單的對JavaMail作出封裝,若是您須要更完美的封裝,請對個人代碼作出修改便可,先來編寫一個MailEntity類來保存發送郵件時須要的參數字段,以下圖3所示:編輯器
咱們的MailEntity包含了上圖3的字段內容,都是一些必填選項,下面咱們來建立一個MailSender也就是郵件發送者實體,主要做用就是用來配置發送郵件參數以及執行發送郵件,代碼以下圖四、五、六、七、8所示:spring-boot
由於簡書的富文本編輯器不支持代碼塊,下次編寫文章使用MarkDown方式來寫,類過長貼起來圖挺費勁。上面能夠看到我使用到了MailContentTypeEnum以及PropertiesUtil工具類。工具
這是一個我自定義的枚舉類型,枚舉類型包含了郵件內容的類型,目前我僅僅添加了兩種,一種是html另一種則是text形式,具體代碼以下圖9所示:學習
PropertiesUtil是用於讀取*.properties配置文件的工具類,使用JavaMail須要配置SMTP以及用戶名、密碼等也就是MailEntity內的字段,那麼咱們在/resource目錄下建立一個名字叫mail.properties的配置文件,裏面存放咱們定義的郵件發送參數配置,這樣方便修改,我分別貼出PropertiesUtil、mail.properties代碼內容,以下圖十、圖11所示:測試
我使用的QQ郵箱地址做爲測試,若是你須要使用你的QQ地址做爲測試,請先到QQ郵箱開啓POP3/SMTP服務,開啓步驟以下。編碼
第一步:進入郵箱點擊「設置」,以下圖12所示:
第二步:點擊「帳戶」後往下拉找到POP3/IMAP/SMTP...,以下圖13所示:
個人POP3以及SMTP以及開啓了因此這裏顯示的狀態是已開啓,若是您第一次使用QQ郵箱的SMTP服務,請點擊「開啓」而且按照提示步驟完成獲取「受權碼」便可,受權碼就是發送郵件參數的smtp.pwd屬性。
咱們建立一個TestMail類來做爲測試入口,由於咱們的項目是jar形式,因此咱們直接新建一個main方法直接調用發送郵件就能夠了,以下圖14所示測試代碼:
我是向個人釘釘郵箱發送了一條文本類型的測試郵件,發送效果圖以下圖15所示:
能夠看到咱們的郵件收到了,證實咱們已經完成了郵件發送的功能了,可是你在發送中配置mail.properties文件時配置暱稱的時候最有可能出現的問題就是亂碼,那麼該問題如何解決呢?
第一步:修改InteiiJ IDEA工具的properties文件的編碼,點擊File->Setting->Editor->File Encodings將下面的Default encoding設置爲UTF-8,以下圖16所示:
那麼咱們的mail.properties內使用ASCII編碼進行配置暱稱就能夠了,具體中文如何轉換ASCII,請你們訪問tool.oschina.net/encode在線轉換便可。修改完成後再次測試發送郵件,你就會發現亂碼問題解決了。
上述內容就是本章的全部講解,本章主要講解了在SpringBoot項目內是如何使用JavaMail來進行發送簡單郵件,簡單封裝了下MailSender類以及對象實體MailEntity,若是須要發送HTML內容的郵件修改contentType(MailContentTypeEnum.HTML)而後content("html代碼")便可。
本章代碼已經上傳碼雲:
SpringBoot配套源碼地址:gitee.com/hengboy/spr…
SpringCloud配套源碼地址:gitee.com/hengboy/spr…
SpringBoot相關係列文章請訪問:目錄:SpringBoot學習目錄
QueryDSL相關係列文章請訪問:QueryDSL通用查詢框架學習目錄
SpringDataJPA相關係列文章請訪問:目錄:SpringDataJPA學習目錄
SpringBoot相關文章請訪問:目錄:SpringBoot學習目錄,感謝閱讀!
歡迎加入QQ技術交流羣,共同進步。