1. 程式人生 > >圖解使用telnet程式手工接收郵件及其過程

圖解使用telnet程式手工接收郵件及其過程

郵件的接收使用了 POP3 (Post Office Protocol ,郵局協議)協議。POP3 協議定義了郵件客戶端程式與 POP3 伺服器進行通訊以獲得郵件相關內容的具體規則和細節。

POP3 協議類似於 SMTP 協議,它定義了一些命令用於管理郵箱等具體操作,為了能夠在 Windows 下使用 telnet 程式來接收郵件,我們需要明白這些相關命令,具體請看下面(<space> 為空格,<CRLF> 為回車加換行):

  1. 1、user<space>郵箱的使用者名稱<CRLF> :
  2. 該命令用於與 POP3 伺服器建立聯絡;  
  3. 2、pass<
    space>郵箱密碼<CRLF> 
  4. 該命令用於 user 命令成功建立連線之後向 POP3 伺服器傳送郵箱的密碼;  
  5. 3、stat<CRLF> : 
  6. 該命令用於檢視郵箱中的郵件數量以及所佔用的位元組大小;  
  7. 4、uidl<space>msg#<CRLF> :
  8. 該命令用於查詢郵箱中編號為 msg# 的郵件的唯一識別符號,注:郵箱中的編號是從 1 開始的;  
  9. 5、list<space>[msg#]<CRLF> 
  10. 該命令用於將郵箱中的郵件資訊進行列表,當指定引數 msg# 時,返回該編號的郵件的資訊,不指定則返回所有郵件的資訊;  
  11. 6、retr<space>msg#<CRLF> :
  12. 該命令用於獲取編號為msg#的郵件的內容;  
  13. 7、dele<space>msg#<CRLF> 
  14. 該命令用於將編號為 msg# 的郵件設定上刪除的標記,注:執行該命令之後郵件並不立即被刪除,而是等到執行 quit 命令才會被刪除;  
  15. 8、rset<space>msg#<CRLF> 
  16. 該命令用於將執行了 dele 命令的編號為 msg# 的郵件的刪除標記清楚掉;  
  17. 9、quit<space>msg#<CRLF> :
  18. 該命令用於結束與 POP3 伺服器的連結,即結束郵件的接收過程,執行完該命令之後,郵箱中被設定了刪除標記的郵件會被真正刪除掉。 

實際上, POP3 協議中還有其他幾個命令,這裡就不給出了,有興趣的搜尋一下。

現在用前面兩篇文章註冊使用過的 [email protected] 和 [email protected] 郵箱(密碼都是:123456)進行實驗,假設我們要接收 [email protected] 郵箱中的郵件,那麼必須知道 163 郵箱的 POP3 伺服器是 pop33.163.com ,並且 POP3 伺服器建立連線的預設埠號是 110 , 具體實驗過程如下:

1、在 Windows 命令列提示符控制檯下使用 telnet 程式與 pop3.163.com 建立連線,輸入命令 telnet pop3.163.com 110 ,如下圖:

image

連線建立成功,POP3 伺服器返回響應資訊如下圖:

image

2、使用 user 命令和 pass 命令分別傳送郵箱使用者名稱和密碼,如下圖:

image

從返回的響應資訊看,已經給出了該郵箱中包含了 4封郵件,共佔 25288 位元組的空間,這從 4 message(s) [24116 byte(s)] 可以看得出來。我們用瀏覽器登入郵箱檢視一下這些資訊是否一致,如下圖:

POP3 接收郵件01

嗯,資訊是對的,共 4 封郵件。

3、使用 stat 命令檢視郵箱中的郵件數量以及所佔位元組數,如下圖:

image

4、使用 uidl 命令查詢指定編號的郵件的唯一識別符號,假設我們查詢編號為 2 的郵件,如下圖: 

image

5、使用 list 命令查詢郵箱中所有郵件的資訊,如下圖:

image

6、 使用 list 命令查詢某一編號的郵件資訊,假設我們檢視編號為 2 的郵件,如下圖:

image

7、使用 dele 命令為某一編號的郵件設定刪除標記,再用 list 命令檢視,如下圖:

image

發現 list 命令查詢出來確實不見了編號為 2 的郵件資訊。

8、使用 rset 命令清除被標上刪除標記的郵件,這裡我們把編號為 2 郵件還原回來,如下圖:

image

9、使用 dele 命令之後再使用 quit 命令斷開連線,即結束與 POP3 伺服器的通訊,然後從瀏覽器登入該郵箱檢視編號為 2 的郵件是否被刪除,如下圖: 

image

image

 POP3 接收郵件02

10、使用 retr 檢視某一編號的郵件中的內容,假設編號為 1,如下圖:

 

這樣子查詢得到的郵件 2 的內容有太多的 MIME 協議定義的格式了,很多都是訊息體、訊息頭什麼的,而且是經過了 BASE64 編碼轉換過的,具體的格式含義請搜尋瞭解一下。

 至此,使用 telnet 程式來手工地接受郵件的過程就差不多了,也是一種感覺:麻煩。