郵件收發(fā)原理你了解嗎? 郵件發(fā)送基本過(guò)程與概念詳解(一)
相信大家在日常工作生活中少不了和郵件打交道,比如我們會(huì)用郵件進(jìn)行信息交流,向上級(jí)匯報(bào)日常工作;再比如大家熟悉的某個(gè)WEB系統(tǒng)注冊(cè)階段,通常會(huì)有一個(gè)功能,點(diǎn)擊發(fā)送到目標(biāo)郵箱的鏈接完成賬戶激活。但是郵件發(fā)送的原理是什么?郵件是如何發(fā)送的呢?本系列教程將會(huì)講解郵件的基本常識(shí)與概念,郵件的協(xié)議以及郵件服務(wù)器的工作原理,然后用JavaMail 發(fā)送郵件的基本實(shí)現(xiàn)過(guò)程,郵件內(nèi)嵌圖片等高級(jí)郵件技巧。相信大家看完后,一定會(huì)有所收獲。
1、電子郵件的發(fā)送和接收過(guò)程
和以往博客一樣,LZ這里先給出用戶A從QQ郵箱發(fā)送郵件到用戶B163郵箱的圖示,然后對(duì)圖示的過(guò)程進(jìn)行詳細(xì)的介紹:
圖示的六個(gè)步驟分別進(jìn)行如下的說(shuō)明:
?、佟⒂脩鬉的電子郵箱為:xx@qq.com,通過(guò)郵件客戶端軟件寫好一封郵件,交到QQ的郵件服務(wù)器,這一步使用的協(xié)議是SMTP,對(duì)應(yīng)圖示的①;
?、?、QQ郵箱會(huì)根據(jù)用戶A發(fā)送的郵件進(jìn)行解析,也就是根據(jù)收件地址判斷是否是自己管轄的賬戶,如果收件地址也是QQ郵箱,那么會(huì)直接存放到自己的存儲(chǔ)空間。這里我們假設(shè)收件地址不是QQ郵箱,而是163郵箱,那么QQ郵箱就會(huì)將郵件轉(zhuǎn)發(fā)到163郵箱服務(wù)器,轉(zhuǎn)發(fā)使用的協(xié)議也是SMTP,對(duì)應(yīng)圖示的②;
?、?、163郵箱服務(wù)器接收到QQ郵箱轉(zhuǎn)發(fā)過(guò)來(lái)的郵件,也會(huì)判斷收件地址是否是自己,發(fā)現(xiàn)是自己的賬戶,那么就會(huì)將QQ郵箱轉(zhuǎn)發(fā)過(guò)來(lái)的郵件存放到自己的內(nèi)部存儲(chǔ)空間,對(duì)應(yīng)圖示的③;
④、用戶A將郵件發(fā)送了之后,就會(huì)通知用戶B去指定的郵箱收取郵件。用戶B會(huì)通過(guò)郵件客戶端軟件先向163郵箱服務(wù)器請(qǐng)求,要求收取自己的郵件,對(duì)應(yīng)圖示的④;
?、?、163郵箱服務(wù)器收到用戶B的請(qǐng)求后,會(huì)從自己的存儲(chǔ)空間中取出B未收取的郵件,對(duì)應(yīng)圖示⑤;
?、?、163郵箱服務(wù)器取出用戶B未收取的郵件后,將郵件發(fā)給用戶B,對(duì)應(yīng)圖示的⑥;最后三步用戶B收取郵件的過(guò)程,使用的協(xié)議是POP3;
上面的步驟可能大家不太明白,這里面出現(xiàn)了很多名詞,比如郵件客戶端軟件,郵件服務(wù)器,SMTP和POP3協(xié)議(郵件傳輸協(xié)議)等等。不明白沒(méi)關(guān)系,接下來(lái)我們來(lái)詳細(xì)介紹這些名詞。
1、郵件服務(wù)器
圖示出現(xiàn)了兩個(gè)郵件服務(wù)器,QQ和163郵件服務(wù)器。用戶想要在網(wǎng)上收發(fā)郵件,必須要有專門的郵件服務(wù)器。郵件服務(wù)器我們可以假想為現(xiàn)實(shí)生活中的郵局。
如果按功能劃分,郵件服務(wù)器可以劃分為兩種類型:
?、佟MTP郵件服務(wù)器:用戶替用戶發(fā)送郵件和接收外面發(fā)送給本地用戶的郵件,對(duì)應(yīng)上圖的第一、二步。它相當(dāng)于現(xiàn)實(shí)生活中郵局的郵件接收部門(可接收普通用戶要投出的郵件和其他郵局投遞進(jìn)來(lái)的郵件)。
?、凇OP3/IMAP郵件服務(wù)器:用戶幫助用戶讀取SMTP郵件服務(wù)器接收進(jìn)來(lái)的郵件,對(duì)應(yīng)上圖的第六步。它相當(dāng)于專門為前來(lái)取包裹的用戶提供服務(wù)的部門。
2、電子郵箱
電子郵箱也稱為E-mail地址,比如用戶A的xx@qq.com,和用戶B的xx@163.com。用戶能通過(guò)E-mail地址標(biāo)識(shí)自己發(fā)送的電子郵件,同時(shí)也可以通過(guò)這個(gè)地址接收別人發(fā)來(lái)的電子郵件。電子郵箱需要到郵件服務(wù)器進(jìn)行申請(qǐng),也就是說(shuō),電子郵箱其實(shí)就是用戶在郵件服務(wù)器上申請(qǐng)的賬戶。郵件服務(wù)器會(huì)把接收到的郵件保存到為該賬戶所分配的郵箱空間中,用戶通過(guò)用戶名密碼登錄到郵件服務(wù)器查收該地址已經(jīng)收到的郵件。一般來(lái)講,郵件服務(wù)器為用戶分配的郵箱空間是有限的。
3、郵件客戶端軟件
我們可以直接在網(wǎng)站上進(jìn)行郵件收發(fā),也可以用郵件客戶端軟件。比如常見的FoxMail,Outlook Express。郵件客戶端軟件通常集郵件撰寫,發(fā)送和收發(fā)功能于一體,主要用于幫助用戶將郵件發(fā)送給SMTP郵件服務(wù)器和從POP3/IMAP郵件服務(wù)器讀取用戶的電子郵件。
4、郵件傳輸協(xié)議
電子郵件需要在郵件客戶端和郵件服務(wù)器之間,以及兩個(gè)郵件服務(wù)器之間進(jìn)行郵件傳遞,那就必須要遵守一定的規(guī)則,這個(gè)規(guī)則就是郵件傳輸協(xié)議。下面我們分別簡(jiǎn)單介紹幾種協(xié)議(后面會(huì)詳細(xì)講解):
?、?、SMTP協(xié)議:全稱為 Simple Mail Transfer Protocol,簡(jiǎn)單郵件傳輸協(xié)議。它定義了郵件客戶端軟件和SMTP郵件服務(wù)器之間,以及兩臺(tái)SMTP郵件服務(wù)器之間的通信規(guī)則。
?、?、POP3協(xié)議:全稱為 Post Office Protocol,郵局協(xié)議。它定義了郵件客戶端軟件和POP3郵件服務(wù)器的通信規(guī)則。
?、?、IMAP協(xié)議:全稱為 Internet Message Access Protocol,Internet消息訪問(wèn)協(xié)議,它是對(duì)POP3協(xié)議的一種擴(kuò)展,也是定義了郵件客戶端軟件和IMAP郵件服務(wù)器的通信規(guī)則。
我們說(shuō)所有的郵件服務(wù)器和郵件客戶端軟件程序都是基于上面的協(xié)議編寫的。
5、總結(jié)
本篇博客我們給出了電子郵件發(fā)送和接收的圖示講解,以及對(duì)于郵件服務(wù)器、郵件客戶端軟件、郵件傳輸協(xié)議的簡(jiǎn)單介紹。下一篇博客我們將重點(diǎn)講解郵件的傳輸協(xié)議,并手動(dòng)通過(guò)SMTP協(xié)議發(fā)送郵件,POP3協(xié)議接收郵件!
- java中javamail發(fā)送帶附件的郵件實(shí)現(xiàn)方法
- Java基于JavaMail實(shí)現(xiàn)向QQ郵箱發(fā)送郵件
- JavaWeb中使用JavaMail實(shí)現(xiàn)發(fā)送郵件功能實(shí)例詳解
- Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件
- Java使用JavaMail API發(fā)送和接收郵件的代碼示例
- JavaMail實(shí)現(xiàn)發(fā)送超文本(html)格式郵件的方法
- 基于SSM框架+Javamail發(fā)送郵件的代碼實(shí)例
- JavaMail實(shí)現(xiàn)郵件發(fā)送的方法
- JavaWeb中JavaMail創(chuàng)建郵件和發(fā)送郵件
- javamail 發(fā)送郵件的實(shí)例代碼分享
相關(guān)文章
Spring boot + LayIM + t-io 實(shí)現(xiàn)文件上傳、 監(jiān)聽用戶狀態(tài)的實(shí)例代碼
這篇文章主要介紹了Spring boot + LayIM + t-io 實(shí)現(xiàn)文件上傳、 監(jiān)聽用戶狀態(tài)的實(shí)例代碼,需要的朋友可以參考下2017-12-12Java中stream處理中map與flatMap的比較和使用案例
這篇文章主要介紹了Java中stream處理中map與flatMap的比較和使用案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03通過(guò)jxl.jar 讀取、導(dǎo)出excel的實(shí)例代碼
通過(guò)jxl.jar 讀取、導(dǎo)出excel的實(shí)例代碼,需要的朋友可以參考一下2013-03-03java實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)通訊錄
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)通訊錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02java聯(lián)調(diào)生成測(cè)試數(shù)據(jù)工具類方式
這篇文章主要介紹了java聯(lián)調(diào)生成測(cè)試數(shù)據(jù)工具類方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Mybatis-plus通用查詢方法封裝的實(shí)現(xiàn)
本文主要介紹了Mybatis-plus通用查詢方法封裝的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java?如何接收kernel傳過(guò)來(lái)的數(shù)組(推薦)
這篇文章主要介紹了Java?如何接收kernel傳過(guò)來(lái)的數(shù)組,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-08-08