個人博客網:https://wushaopei.github.io/ (你想要這里多有)
一、JavaMail
1、什么是JavaMail?
JavaMail,顧名思義,提供給開發者處理 電子郵件相關的編程接口。它是Sun發布的用來處理email的API。它可以方便的執行一些常用的郵件傳輸。我們可以基於JavaMaiil開發出類似於 Microsoft Outlook的應用程序。
2、關於要使用JavaMail的原因?
基於現在WEB開發中對JavaMail的需求,例如:
用戶注冊后,網站發送一封激活郵件驗證;
用戶過生日,系統發送生日祝福郵件;
將最新活動和優惠以郵件的形式告知會員等等........
以上的需求都需要通過編程語言實現發送郵件功能,而JavaMail便能滿足這一需求。
3、電子郵箱及郵件服務器
什么是電子郵箱?
電子郵箱(E-mail 地址) 需要在郵件服務器上進行申請,確切的說,電子郵箱其實就是用戶在郵件服務器上申請的一個賬戶,用戶在郵件服務器上申請了一個賬號后,郵件服務器就會為這個賬號分配一定的空間,用戶從而可以使用這個賬號以及空間,發送電子郵件和保存別人發送過來的電子郵件。
什么是郵箱服務器?
服務器指的是一台電腦安裝了一個服務器軟件,那么這台電腦就可以稱為是WEB服務器,那么同樣的一台電腦安裝了郵件服務器軟件,那么這台電腦稱為是郵件服務器。
基於互聯網的電子郵件功能:
要在Internet上提供電子郵件功能,必須有專門的電子郵件服務器,例如目前網絡上提供郵件服務的廠商:新浪、搜狐、網易等等他們都有自己的郵件服務器。
4、郵件收發協議
(1)SMTP協議(發送郵件)
簡單郵件傳輸協議 (Simple Mail Transfer Protocol, SMTP) 是在Internet傳輸email的事實標准。(百度百科)
SMTP是一個相對簡單的基於文本的協議。在其之上指定了一條消息的一個或多個接收者(在大多數情況下被確認是存在的),然后消息文本會被傳輸。可以很簡單地通過telnet程序來測試一個SMTP服務器。SMTP使用TCP端口25。要為一個給定的域名決定一個SMTP服務器,需要使用MX (Mail eXchange) DNS。(百度百科)
用戶臉上郵件服務器后,要想給它發送一封電子郵件,需要遵循一定的通訊規則,SMTP協議就是用於定義這種規則的。因此,通常我們也把處理用戶SMTP請求(郵件發送請求)的郵件服務器稱之為SMTP服務器。
(2)POP3協議(接收郵件)
POP3,全名為“Post Office Protocol - Version 3”,即“郵局協議版本3”。是TCP/IP協議族中的一員,由RFC1939 定義。本協議主要用於支持使用客戶端遠程管理在服務器上的電子郵件。提供了SSL加密的POP3協議被稱為POP3S。(百度百科)
POP 協議支持“離線”郵件處理。其具體過程是:郵件發送到服務器上,電子郵件客戶端調用郵件客戶機程序以連接服務器,並下載所有未閱讀的電子郵件。這種離線訪問模式是一種存儲轉發服務,將郵件從郵件服務器端送到個人終端機器上,一般是PC機或 MAC。一旦郵件發送到 PC 機或MAC上,郵件服務器上的郵件將會被刪除。但目前的POP3郵件服務器大都可以“只下載郵件,服務器端並不刪除”,也就是改進的POP3協議。(百度百科)
同樣,用戶若想從郵件服務器管理的電子郵件中接受一封電子郵件的話,他臉上郵件服務器后,也需要遵循一定的通訊格式,POP3協議用於定義這種通訊格式。
因而,通常我們也把處理用戶POP3請求(郵件接受請求)的郵件服務器稱之為POP3服務器。
(3)郵件收發過程的介紹:
郵件的發送、接受,在客戶端軟件中,由SMTP服務器進行發送操作,接受是由POP3服務器進行接收。
1、郵件發送協議-SMTP,默認端口號25
用於把用戶郵件從一個服務器轉到下一個服務器
2、郵件接收協議-POP3,默認端口號110
用於支持使用客戶端遠程管理在服務器上的電子郵件
二、郵件發送代碼實現
1、環境搭建
(1)創建數據庫和表
(2)創建一個springboot工程,創建相應的包,並配置相應的pom.xml依賴
pom.xml
(3)創建User類並配置application.yml
User類:
application.yml
(4)設計注冊頁面
index.html
(5)Handler :創建接口,接收form 表單數據並進行封裝,並經過dao 層 添加到對應的數據庫表中
(6)創建一個UUIDUtils 工具類,使用UUID隨機生成激活碼
(7)創建郵箱參數實體EmailConfig.java和發送郵件工具類MailUtils.java
EmailConfig.java
MailUtils.java
(8)在(4)中的接口接收注冊參數並寫入數據庫后,進行激活郵件的發送
UserServiceimpl.java
完整 業務層代碼:
UserService.java
UserServiceImpl.java
(9)UserMapper.java 和 UserMapper.xml
(10)創建用戶激活接口:
小結:
發送激活郵件正文,正文內容使用 html 的語法進行修飾,用戶郵箱POP3接受到郵件后會自動根據標簽及樣式進行解析。
激活郵件的原理:
發送郵件給用戶,用戶根據接收到的郵件的連接點擊並跳轉到對應的controller請求接口執行code驗證碼查詢到用戶,並根據當前激活碼的作用對用戶執行激活賬戶、業務等操作!!!
https://github.com/wushaopei/SPRING_BOOT/tree/master/spring-boot-JSP-email


