Pop3協議詳解


 

  POP3全稱為Post Office Protocol version3,即郵局協議第3版。它被用戶代理用來郵件服務器取得郵件。POP3采用的也是C/S通信 模型

 

   用戶從郵件服務器上接收郵件的典型通信過程如下。

1) 用戶運行用戶代理(如Foxmail, Outlook Express)。

2) 用戶代理(以下簡稱客戶端)與郵件服務器(以下簡稱服務器端)的110端口建立TCP連 接。

3) 客戶端向服務器端發出各種命令,來請求各種服務(如查詢郵箱信息,下載某封郵件等)。

4) 服務端解析用戶的命令,做出相應動作並返回給客戶端一個響應。

5) 3)和4)交替進行,直到接收完所有郵件轉到步驟6),或兩者的連接被意外中斷而直接退出。

6) 用戶代理解析從服務器端獲得的郵件,以適當地形式(如可讀)的形式呈現給用戶。

  <SP>代表空格,<CRLF>代表回車和換行。

   

POP3命令格式 說明
user<SP>username<CRLF>       user 命令是POP3客戶端程序與POP3郵件服務器建立連接后通常發送的第一條命令,參數 username 表示收件人的帳戶名稱。
pass<SP>password<CRLF>       pass 命令是在user命令成功通過后,POP3客戶端程序接着發送的命令,它用於傳遞帳戶的密碼,參數 password 表示帳戶的密碼。
apop<SP>name,digest<CRLF>       apop 命令用於替代user和pass命令,它以MD5 數字摘要的形式向POP3郵件服務器提交帳戶密碼。
stat<CRLF>      stat 命令用於查詢郵箱中的統計信息,例如:郵箱中的郵件數量和郵件占用的字節大小等。
uidl<SP>msg#<CRLF>      uidl 命令用於查詢某封郵件的唯一標志符,參數msg#表示郵件的序號,是一個從1開始編號的數字。
list<SP>[MSG#]<CRLF>      list 命令用於列出郵箱中的郵件信息,參數 msg#是一個可選參數,表示郵件的序號。當不指定參數時,POP3服務器列出郵箱中所有的郵件信息;當指定參數msg#時,POP3服務器只返回序號對應的郵件信息。
retr<SP>msg#<CRLF>     retr 命令用於獲取某封郵件的內容,參數 msg#表示郵件的序號。
dele<SP>msg#<CRLF>     dele 命令用於在某封郵件上設置刪除標記,參數msg#表示郵件的序號。POP3服務器執行dele命令時,只是為郵件設置了刪除標記,並沒有真正把郵件刪除掉,只有POP3客戶端發出quit命令后,POP3服務器才會真正刪除所有設置了刪除標記的郵件。
rest<CRLF>     rest 命令用於清除所有郵件的刪除標記。
top<SP>msg#<SP>n<CRLF>     top 命令用於獲取某封郵件的郵件頭和郵件體中的前n行內容,參數msg#表示郵件的序號,參數n表示要返回郵件的前幾行內容。使用這條命令以提高 Web Mail系統(通過Web站點上收發郵件)中的郵件列表顯示的處理效率,因為這種情況下不需要獲取每封郵件的完整內容,而是僅僅需要獲取每封郵件的郵件頭信息。
noop<CRLF>     noop 命令用於檢測POP3客戶端與POP3服務器的連接情況。
quit<CRLF>     quit 命令表示要結束郵件接收過程,POP3服務器接收到此命令后,將刪除所有設置了刪除標記的郵件,並關閉與POP3客戶端程序的網絡連接。

        對於POP3客戶程序發送的每一條POP3命令,POP3服務器都將回應一些響應信息。響應信息由一行或多行文本信息組成,其中的第一行始終以“+OK” 或 “-ERR” 開頭,它們分別表示當前命令執行成功或執行失敗。


 

POP3協議中有三種狀態,認正狀態,處理狀態,和更新狀態。命令的執行可以改變協議的狀態,而對於具體的某命令,它只能在具體的某狀態下使用

 

客戶機與服務器剛與服務器建立連接時,它的狀態為認證狀態;一旦客戶機提供了自己身份並被成功地確認,即由認可狀態轉入處理狀態; 在完成相應的操作后客戶機發出QUIT命令(具體說明見后續內容),則進入更新狀態,更新之后又重返認可狀態;當然在認可狀態下執行QUIT命令,可釋放連接。

---建立連接---|認可|--認證成 功--|處理|--執行QUIT--|更新| 
|_______ -QUIT結束_________________|


 

IMAP協議在 RFC2060文檔中定義,目前使用的是第4個版本,所以也稱為IMAP4。IMAP協議相對於POP3協議而言,它定了更為強大的郵件接收功能,主要體現在以下一些方面:
  1. IMAP具有摘要瀏覽功能,可以讓用戶在讀完所有郵件的主題、發件人、大小等信息后,再由用戶做出是否下載或直接在服務器上刪除的決定。
  2. IMAP可以讓用戶有選擇性地下載郵件附件。例如一封郵件包含3個附件,如果用戶確定其中只有2個附件對自已有用,就可只下載這2個附件,而不必下載整封郵件,從而節省了下載時間。
  3. IMAP可以讓用戶在郵件服務器上創建自己的郵件夾,分類保存各個郵件。

早期人們在使用電子郵件時,都是使用普通文本內容的電子郵件內容進行交流,由於互聯網的迅猛發展,人們已不滿足電子郵件僅僅是用來交換文本信息,而希望使用電子郵件來交換更為豐富多彩的多媒體信息,例如,在郵件中嵌入圖片、聲音、動畫和附件等二進制數據。但在以往的郵件發送協議RFC822文檔中定義,只能發送文本信息,無法發送非文本的郵件,針對這個問題,人們后來專門為此定義了MIME(Multipurpose Internet Mail Extension,多用途Internet郵件擴展)協議。

    MIME協議用於定義復雜的郵件體格式,它可以表達多段平行的文本內容和非文本的郵件內容,例如,在郵件體中內嵌的圖像數據和郵件附件等。另外,MIME協議的數據格式也可以避免郵件內容在傳輸過程發生信息丟失。對於表示某個具體資源的MIME消息,它的消息頭中需要指定資源的數據類型;對於MIME組合消息,它的消息中需要指定組合關系。具體資源的數據類型和組合消息的組合關系,都是通過消息頭中的Content-Type頭字段來指定的。Content-Type字段中的內容以“主類型/子類型”的形式出現,主類型有text、image、audio、video、application、multipart、message等,分別表示文本、圖片、音頻、視頻、應用程序、組合結構、消息等。每個主類型下面都有多個子類型,例如text類型包含plain、html、xml、css等子類型。multipart主類型用於表示MIME組合消息,它是MIME協議中最重要的一種類型。一封MIME郵件中的MIME消息可以有三種組合關系:混合、關聯、選擇,它們對應MIME類型如下:

 

  • multipart/mixed
表示消息體中的內容是混和組合類型,內容可以是文本、聲音和附件等不同郵件內容的混和體。比如一封郵件中即包含附件,郵件內容還引用內嵌的圖片或附件資源,這種類型郵件的MIME類型就必須定義為multipart/mixed。
  • multipart/related
表示消息體中的內容是關聯(依賴)組合類型。比如:郵件內容有一個img標簽,這個標簽的src屬性指向的是郵件內部的一個圖片資源,所以這封郵件MIME類型就應該定義為multipart/related
  • multipart/alternative
表示消息體中的內容是選擇組合類型,例如一封郵件的郵件正文同時采用HTML格式和普通文本格式進行表達時,就可以將它們嵌套在一個multipart/alterntive類型的組合消息中。這種做法的好處在於如果郵件閱讀程序不支持HTML格式時,可以采用其中的文本格式進行替代。
    一封最復雜的電子郵件的基本情況為:含有郵件正文和郵件附件,郵件正文可以同時使用HTML格式和普通文本格式表示,並且HTML格式的正文中又引用了其它的內嵌資源。對於這種最復雜的電子郵件,可以采用下圖所示的MIME消息結構進行描述:
    從上圖中可以看出,如果在郵件中要添加附件,就必須將整封郵件的MIME類型定義為multipart/mixed;如果要在HTML格式的正文中引用內嵌資源,那就要定義multipart/related類型的MIME消息;如果普通文本內容與HTML文本內容共存,那就要定義multipart/alternative類型的MIME消息。
    注意:如果整封郵件中只有普通文本內容與HTML文本內容,那么整封郵件的MIME類型則應定義為multipart/alternative;如果整封郵件中包含有HTML文本內容和內嵌資源,但不包含附件,那么整封郵件的MIME類型則應該定義為multipart/related。
 
    參考:
     http://www.cnblogs.com/diegodu/p/4097202.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM