郵件收發(fā)原理你了解嗎? 郵件發(fā)送基本過程與概念詳解(一)
相信大家在日常工作生活中少不了和郵件打交道,比如我們會用郵件進行信息交流,向上級匯報日常工作;再比如大家熟悉的某個WEB系統(tǒng)注冊階段,通常會有一個功能,點擊發(fā)送到目標郵箱的鏈接完成賬戶激活。但是郵件發(fā)送的原理是什么?郵件是如何發(fā)送的呢?本系列教程將會講解郵件的基本常識與概念,郵件的協(xié)議以及郵件服務器的工作原理,然后用JavaMail 發(fā)送郵件的基本實現(xiàn)過程,郵件內嵌圖片等高級郵件技巧。相信大家看完后,一定會有所收獲。
1、電子郵件的發(fā)送和接收過程
和以往博客一樣,LZ這里先給出用戶A從QQ郵箱發(fā)送郵件到用戶B163郵箱的圖示,然后對圖示的過程進行詳細的介紹:

圖示的六個步驟分別進行如下的說明:
①、用戶A的電子郵箱為:xx@qq.com,通過郵件客戶端軟件寫好一封郵件,交到QQ的郵件服務器,這一步使用的協(xié)議是SMTP,對應圖示的①;
?、?、QQ郵箱會根據(jù)用戶A發(fā)送的郵件進行解析,也就是根據(jù)收件地址判斷是否是自己管轄的賬戶,如果收件地址也是QQ郵箱,那么會直接存放到自己的存儲空間。這里我們假設收件地址不是QQ郵箱,而是163郵箱,那么QQ郵箱就會將郵件轉發(fā)到163郵箱服務器,轉發(fā)使用的協(xié)議也是SMTP,對應圖示的②;
?、?、163郵箱服務器接收到QQ郵箱轉發(fā)過來的郵件,也會判斷收件地址是否是自己,發(fā)現(xiàn)是自己的賬戶,那么就會將QQ郵箱轉發(fā)過來的郵件存放到自己的內部存儲空間,對應圖示的③;
?、堋⒂脩鬉將郵件發(fā)送了之后,就會通知用戶B去指定的郵箱收取郵件。用戶B會通過郵件客戶端軟件先向163郵箱服務器請求,要求收取自己的郵件,對應圖示的④;
?、?、163郵箱服務器收到用戶B的請求后,會從自己的存儲空間中取出B未收取的郵件,對應圖示⑤;
?、?、163郵箱服務器取出用戶B未收取的郵件后,將郵件發(fā)給用戶B,對應圖示的⑥;最后三步用戶B收取郵件的過程,使用的協(xié)議是POP3;
上面的步驟可能大家不太明白,這里面出現(xiàn)了很多名詞,比如郵件客戶端軟件,郵件服務器,SMTP和POP3協(xié)議(郵件傳輸協(xié)議)等等。不明白沒關系,接下來我們來詳細介紹這些名詞。
1、郵件服務器
圖示出現(xiàn)了兩個郵件服務器,QQ和163郵件服務器。用戶想要在網(wǎng)上收發(fā)郵件,必須要有專門的郵件服務器。郵件服務器我們可以假想為現(xiàn)實生活中的郵局。
如果按功能劃分,郵件服務器可以劃分為兩種類型:
?、?、SMTP郵件服務器:用戶替用戶發(fā)送郵件和接收外面發(fā)送給本地用戶的郵件,對應上圖的第一、二步。它相當于現(xiàn)實生活中郵局的郵件接收部門(可接收普通用戶要投出的郵件和其他郵局投遞進來的郵件)。
?、?、POP3/IMAP郵件服務器:用戶幫助用戶讀取SMTP郵件服務器接收進來的郵件,對應上圖的第六步。它相當于專門為前來取包裹的用戶提供服務的部門。
2、電子郵箱
電子郵箱也稱為E-mail地址,比如用戶A的xx@qq.com,和用戶B的xx@163.com。用戶能通過E-mail地址標識自己發(fā)送的電子郵件,同時也可以通過這個地址接收別人發(fā)來的電子郵件。電子郵箱需要到郵件服務器進行申請,也就是說,電子郵箱其實就是用戶在郵件服務器上申請的賬戶。郵件服務器會把接收到的郵件保存到為該賬戶所分配的郵箱空間中,用戶通過用戶名密碼登錄到郵件服務器查收該地址已經(jīng)收到的郵件。一般來講,郵件服務器為用戶分配的郵箱空間是有限的。
3、郵件客戶端軟件
我們可以直接在網(wǎng)站上進行郵件收發(fā),也可以用郵件客戶端軟件。比如常見的FoxMail,Outlook Express。郵件客戶端軟件通常集郵件撰寫,發(fā)送和收發(fā)功能于一體,主要用于幫助用戶將郵件發(fā)送給SMTP郵件服務器和從POP3/IMAP郵件服務器讀取用戶的電子郵件。
4、郵件傳輸協(xié)議
電子郵件需要在郵件客戶端和郵件服務器之間,以及兩個郵件服務器之間進行郵件傳遞,那就必須要遵守一定的規(guī)則,這個規(guī)則就是郵件傳輸協(xié)議。下面我們分別簡單介紹幾種協(xié)議(后面會詳細講解):
?、?、SMTP協(xié)議:全稱為 Simple Mail Transfer Protocol,簡單郵件傳輸協(xié)議。它定義了郵件客戶端軟件和SMTP郵件服務器之間,以及兩臺SMTP郵件服務器之間的通信規(guī)則。
?、凇OP3協(xié)議:全稱為 Post Office Protocol,郵局協(xié)議。它定義了郵件客戶端軟件和POP3郵件服務器的通信規(guī)則。
?、邸MAP協(xié)議:全稱為 Internet Message Access Protocol,Internet消息訪問協(xié)議,它是對POP3協(xié)議的一種擴展,也是定義了郵件客戶端軟件和IMAP郵件服務器的通信規(guī)則。
我們說所有的郵件服務器和郵件客戶端軟件程序都是基于上面的協(xié)議編寫的。
5、總結
本篇博客我們給出了電子郵件發(fā)送和接收的圖示講解,以及對于郵件服務器、郵件客戶端軟件、郵件傳輸協(xié)議的簡單介紹。下一篇博客我們將重點講解郵件的傳輸協(xié)議,并手動通過SMTP協(xié)議發(fā)送郵件,POP3協(xié)議接收郵件!
- java中javamail發(fā)送帶附件的郵件實現(xiàn)方法
- Java基于JavaMail實現(xiàn)向QQ郵箱發(fā)送郵件
- JavaWeb中使用JavaMail實現(xiàn)發(fā)送郵件功能實例詳解
- Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件
- Java使用JavaMail API發(fā)送和接收郵件的代碼示例
- JavaMail實現(xiàn)發(fā)送超文本(html)格式郵件的方法
- 基于SSM框架+Javamail發(fā)送郵件的代碼實例
- JavaMail實現(xiàn)郵件發(fā)送的方法
- JavaWeb中JavaMail創(chuàng)建郵件和發(fā)送郵件
- javamail 發(fā)送郵件的實例代碼分享
相關文章
關于@Controller和@Restcontroller的那點奇葩事
這篇文章主要介紹了關于@Controller和@Restcontroller的那點奇葩事,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02
詳解Java的MyBatis框架中動態(tài)SQL的基本用法
這篇文章主要介紹了詳解Java的MyBatis框架中動態(tài)SQL的基本用法,文中列出了一些常用SQL動態(tài)語句進行講解,需要的朋友可以參考下2016-04-04

