您的位置 首页 kreess

POP3協議(電子郵件郵局協議)中UIDL和TOP命令在實際使用中的作用

POP3是電子郵件協議中用於接收郵件的協議,相較於發送郵件的SMTP協議,POP3的命令要多一些。主要的命令有LIST、STAT、RETR、DELE、UIDL、TOP、QU

POP3是電子郵件協議中用於接收郵件的協議,相較於發送郵件的SMTP協議,POP3的命令要多一些。主要的命令有LIST、STAT、RETR、DELE、UIDL、TOP、QUIT,以及用於登錄郵箱的USER和PASS命令。

介紹POP3命令的文章有很多,這裡重點介紹UIDL和TOP在實際使用中的現實意義。

使用這些命令非常簡單,可以用telnet命令進行模擬交互。下面以http://pop.yeah.net郵箱服務器為例,在命令行模式下輸入:

當用戶連接上POP郵件服務器時,會收到服務器返回的歡迎語,接著使用USER和PASS命令登錄郵箱,登錄成功後,就可以使用其它命令與POP服務器進行在線交互瞭。

其中,STAT命令顯示郵箱中的郵件數量和所有郵件的大小(以字節為單位)。

LIST命令用於列出郵箱中的所有郵件信息,確切的說是消息摘要,因為這裡的郵件信息並不是指郵件的主題、發件人、收件人等信息,而隻是簡單的郵件編號(msgno)和郵件大小。

這裡顯示的有8封郵件,由於可能存在多條(多行)消息,因此POP協議中以".“加回車換行(”rn")作為整個LIST響應消息的結束,此外接收郵件的RETR命令也是以“.rn”作為整個郵件的結束。

顯然我們無法通過LIST命令看到郵件具體的摘要信息,比如最重要的郵件主題和發件人。

TOP命令的作用

此時TOP命令就發揮瞭作用,該命令用於獲取某封郵件的郵件頭和郵件體中的前N行內容(TOP msgno N)。使用如下命令可以獲取郵件頭。

註意這裡的N是指郵件體中的前N行內容,如果N為0,則表示不返回內容,僅返回郵件頭(這裡獲取郵件編號為1的郵件頭)。

郵件頭中包含瞭主題(Subject)、發件人(From)、收件人(To)、抄送人(Cc)等重要信息。當然這些信息需要你自己寫程序進行逐行解析。

通過LIST和TOP命令的結合使用,我們就可以快速的查看郵箱中所有郵件的概要信息。這樣可以避免將整個郵件全部下載下來。

當我們看到感興趣的郵件時(主題和發件人)可以決定是否使用RETR命令將整封郵件讀取下來;反之,如果是垃圾郵件,則直接使用DELE命令將其刪除。

UIDL命令的作用

UIDL命令用於查詢某封郵件的唯一標識符。

該命令的現實意義在於:當你對郵件進行持久化,也就是下載到本地進行離線管理時,可作為識別該郵件的唯一身份ID,從而避免重復下載,並進行有效的本地化管理。

通過上面的命令我們可以看到,POP協議是以郵件編號(msgno)作為郵件標識進行在線交互操作,但郵件編號(msgno)隻能保證在本次會話中保持唯一,不能保證在下次會話中不會發生變化。如果刪除瞭第1封郵件,並退出重新登錄郵箱,郵件的順序將會打亂。

附帶說明一下:DELE命令隻是將郵件在本次會話中標記為刪除,隻有在QUIT命令發出時,也就是退出POP會話時,服務器才會進行一次真正的郵件刪除操作。

有些人使用郵件客戶端程序接收郵件後,並不會從pop服務器上刪除郵件。這樣可以確保在不同的終端上還能繼續查看郵件,比如使用公司的Foxmail接收瞭郵件,如果回傢或出差時,可以使用其它終端設備(筆記本或手機)的郵件客戶端程序(比如Outlook)將郵件再下載一遍。這時客戶端程序會通過郵件的UIDL來確定該郵件是否已下載過,比如我們可以使用UIDL來作為下載郵件的文件名,如果發現文件已存在,就不需要從POP服務器進行再次讀取。

通過LIST和UIDL命令的結合使用,我們可以對離線郵件(已下載郵件)進行在線比對,從而判斷是否有新郵件需要接收。

附: 部分常用郵箱使用的UIDL一覽

qq郵箱

新浪郵箱

網易郵箱

微軟郵箱

附:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部