郵件發送也是一個老生常談的問題了,代碼雖然簡單,但是許多小夥伴對過程不太理解,所以還是打算和各位小夥伴聊聊這個話題。
郵件協議
我們經常會聽到各種各樣的郵件協議,比如 SMTP、POP3、IMAP ,那麽這些協議有什麽作用,有什麽區別?我們先來討論一下這個問題。
SMTP 是一個基于 TCP/IP 的應用層協議,江湖地位有點類似于 HTTP,SMTP 服務器默認監聽的端口號爲 25 。看到這裏,小夥伴們可能會想到既然 SMTP 協議是基于 TCP/IP 的應用層協議,那麽我是不是也可以通過 Socket 發送一封郵件呢?回答是肯定的。
生活中我們投遞一封郵件要經過如下幾個步驟:
- 深圳的小王先將郵件投遞到深圳的郵局
- 深圳的郵局將郵件運送到上海的郵局
- 上海的小張來郵局取郵件
這是一個縮減版的生活中郵件發送過程。這三個步驟可以分別對應我們的郵件發送過程,假設從 [email protected] 發送郵件到 [email protected] :
- [email protected] 先將郵件投遞到騰訊的郵件服務器
- 騰訊的郵件服務器將我們的郵件投遞到網易的郵件服務器
- [email protected] 登錄網易的郵件服務器查看郵件
郵件投遞大致就是這個過程,這個過程就涉及到了多個協議,我們來分別看一下。
SMTP 協議全稱爲 Simple Mail Transfer Protocol,譯作簡單郵件傳輸協議,它定義了郵件客戶端軟件于 SMTP 服務器之間,以及 SMTP 服務器與 SMTP 服務器之間的通信規則。
也就是說 [email protected] 用戶先將郵件投遞到騰訊的 SMTP 服務器這個過程就使用了 SMTP 協議,然後騰訊的 SMTP 服務器將郵件投遞到網易的 SMTP 服務器這個過程也依然使用了 SMTP 協議,SMTP 服務器就是用來收郵件。
而 POP3 協議全稱爲 Post Office Protocol ,譯作郵局協議,它定義了郵件客戶端與 POP3 服務器之間的通信規則,那麽該協議在什麽場景下會用到呢?當郵件到達網易的 SMTP 服務器之後, [email protected] 用戶需要登錄服務器查看郵件,這個時候就該協議就用上了:郵件服務商都會爲每一個用戶提供專門的郵件存儲空間,SMTP 服務器收到郵件之後,就將郵件保存到相應用戶的郵件存儲空間中,如果用戶要讀取郵件,就需要通過郵件服務商的 POP3 郵件服務器來完成。
最後,可能也有小夥伴們聽說過 IMAP 協議,這個協議是對 POP3 協議的擴展,功能更強,作用類似,這裏不再贅述。
發送QQ郵件准備工作
首先我們需要先登錄 QQ 郵箱網頁版,點擊上方的設置按鈕:
在賬戶選項卡中找到開啓POP3/SMTP選項,如下: