IMAP指令簡介篇

2021-09-29 23:10:41 字數 1695 閱讀 3665

imap指令簡介篇

今天先來簡單的總結一下imap指令。 

先來掃掃盲神馬是imap,我覺得wiki的解釋是最貼近的,先來看看定義: 

imap也是史丹福大學參與制訂的,可見這所高校為網際網路發展做出了太多貢獻。又再次感慨國內的高校真應該多學習學習。 

當談及協議時我一般學習的步驟是這樣的: 

1.wiki一下定義(主要是應用領域、歷史等) 

2.看一下是否是標準協議,如果是看一下rfc定義(這也是了解協議的必須步驟) 

3.最後看一下標準的實現(比如:imap我就抓了一大堆outlook互動包,分析協議內容) 

想必一般童鞋操作郵件時都熟悉了pop3協議吧,先來看看pop3協議的指令集: 

user、pass、list、stat、uidl、retr、top、rset、dele、noop、quit、apop 

再來看看imap的指令集: 

看到了imap指令比pop3多出很多,當然這也是因為imap是總結了pop3協議的不足在此基礎上進行優化的協議,複雜繁多也正式能力的表現,imap做了很多pop3無法做到的事情,協議也同樣導致了伺服器與客戶端實現的複雜度,和整個業界的認可與推廣,還好的就是imap已經在各大郵件伺服器得到了實現,這裡gmail功不可沒啊。 

這篇文章是imap指令的簡介,還是先來看看指令的功能,方便快速了解。 

介紹指令功能前,還要弄清楚imap協議的幾種狀態: 

not authenticated state: 非認證狀態

這個狀態是還沒有進行鑑權的過程,就是還沒有輸入使用者名稱與密碼進行校驗的狀態,這種 

狀態下你不能對自己資料進行操作,例如你想看一下資料夾列表,或是某封郵件等。

authenticated state: 認證狀態

這個狀態是已經輸入了使用者名稱密碼並且已經得到伺服器驗證通過,此狀態下才能對你的資料進行操作,這也比較好理解。

selected state: 選擇狀態

這個狀態的前提條件是"認證狀態",至於為什麼要有這個狀態呢,可以理解成是對資料的直接操作,例如:選擇一封郵件,將一封郵件設定已讀等。 

指令簡介:

指令 功能

capability 伺服器響應能力描述,此指令個人理解是當前郵件伺服器的能力。

noop 與伺服器保持連線,可以用來新郵件或者訊息狀態更新。

logout 終端伺服器連線

starttls 與伺服器使用tls進行互動

authenticate 與伺服器的認證機制

login 鑑權登陸,輸入使用者名稱與密碼

select 選擇資料夾

examine 選擇資料夾唯讀方式

create 建立乙個資料夾

delete 刪除乙個資料夾

rename 重新命名乙個檔案  www.2cto.com  

subscribe 訂閱指定的郵箱位址

unsubscribe 取消訂閱

list 返回詳細的資料夾列表

lsub 返回訂閱的郵箱位址欄表

status 請求返回指定郵箱資料夾的狀態

check 檢查當前伺服器狀態(例如:磁碟,記憶體等)

close 永久刪除所有訊息

expunge 永久刪除所有訊息,與close不同的是,將返回每個訊息標識

search 類似linux系統find命令,功能很強大可以按照不同條件搜尋郵件

copy 拷貝指定的訊息

uid 返回uid列表用於fetch

pragma指令簡介

在編寫程式的時候,我們經常要用到 pragma指令來設定編譯器的狀態或者是指示編譯器完成一些特定的動作.下面介紹了一下該指令的一些常用引數,希望對大家有所幫助 一.message 引數。message 它能夠在編譯資訊輸出視窗中輸出相應的資訊,這對於源 資訊的控制是非常重要的。其使用方法為 prag...

pragma指令簡介

pragma指令簡介 在編寫程式的時候,我們經常要用到 pragma指令來設定編譯器的狀態或者是指示編譯器完成一些特定的動作.下面介紹了一下該指令的一些常用引數,希望對大家有所幫助 一.message 引數。message 它能夠在編譯資訊輸出窗 口中輸出相應的資訊,這對於源 資訊的控制是非常重要的...

pragma指令簡介

在編寫程式的時候,我們經常要用到 pragma指令來設定編譯器的狀態或者是指示編譯器完成一些特定的動作.下面介紹了一下該指令的一些常用引數,希望對大家有所幫助 一.message 引數。message 它能夠在編譯資訊輸出窗 口中輸出相應的資訊,這對於源 資訊的控制是非常重要的。其使用方法為 pra...