今天先來簡(jiǎn)單的總結(jié)一下IMAP指令。
先來掃掃盲神馬是IMAP,我覺得wiki的解釋是最貼近的,先來看看定義: https://zh.wikipedia.org/wiki/IMAP
當(dāng)談及協(xié)議時(shí)我一般學(xué)習(xí)的步驟是這樣的:
- wiki一下定義(主要是應(yīng)用領(lǐng)域、歷史等)
- 看一下是否是標(biāo)準(zhǔn)協(xié)議,如果是看一下RFC定義(這也是了解協(xié)議的必須步驟)
- 最后看一下標(biāo)準(zhǔn)的實(shí)現(xiàn)(比如:IMAP我就抓了一大堆OUTLOOK交互包,分析協(xié)議內(nèi)容)
POP3協(xié)議的指令集:
USER、PASS、LIST、STAT、UIDL、RETR、TOP、RSET、DELE、NOOP、QUIT、APOP
IMAP協(xié)議的指令集:
CAPABILITY、NOOP、LOGOUT、STARTTLS、AUTHENTICATE、LOGIN、SELECT、EXAMINE、CREATE、DELETE、RENAME、SUBSCRIBE、UNSUBSCRIBE、LIST、LSUB、STATUS、APPEND、CHECK、CLOSE、EXPUNGE、SEARCH、FETCH、STORE、COPY、UID
看到了IMAP指令比POP3多出很多,當(dāng)然這也是因?yàn)镮MAP是總結(jié)了POP3協(xié)議的不足在此基礎(chǔ)上進(jìn)行優(yōu)化的協(xié)議,復(fù)雜繁多也正式能力的表現(xiàn),IMAP做了很多POP3無法做到的事情,協(xié)議也同樣導(dǎo)致了服務(wù)器與客戶端實(shí)現(xiàn)的復(fù)雜度,和整個(gè)業(yè)界的認(rèn)可與推廣,還好的就是IMAP已經(jīng)在各大郵件服務(wù)器得到了實(shí)現(xiàn),這里GMAIL功不可沒啊。
IMAP協(xié)議的幾種狀態(tài):
Not Authenticated State: 非認(rèn)證狀態(tài)
這個(gè)狀態(tài)是還沒有進(jìn)行鑒權(quán)的過程,就是還沒有輸入用戶名與密碼進(jìn)行校驗(yàn)的狀態(tài),這種狀態(tài)下你不能對(duì)自己數(shù)據(jù)進(jìn)行操作,例如你想看一下文件夾列表,或是某封郵件等。Authenticated State: 認(rèn)證狀態(tài)
這個(gè)狀態(tài)是已經(jīng)輸入了用戶名密碼并且已經(jīng)得到服務(wù)器驗(yàn)證通過,此狀態(tài)下才能對(duì)你的數(shù)據(jù)進(jìn)行操作,這也比較好理解。Selected State: 選擇狀態(tài)
這個(gè)狀態(tài)的前提條件是"認(rèn)證狀態(tài)",至于為什么要有這個(gè)狀態(tài)呢,可以理解成是對(duì)數(shù)據(jù)的直接操作,例如:選擇一封郵件,將一封郵件設(shè)置已讀等。
指令簡(jiǎn)介:
- CAPABILITY
服務(wù)器響應(yīng)能力描述,此指令個(gè)人理解是當(dāng)前郵件服務(wù)器的能力。 - NOOP
與服務(wù)器保持連接,可以用來新郵件或者消息狀態(tài)更新。 - LOGOUT
與服務(wù)器斷開連接 - STARTTLS
與服務(wù)器使用TLS進(jìn)行交互 - AUTHENTICATE
與服務(wù)器的認(rèn)證機(jī)制 - LOGIN
鑒權(quán)登陸,輸入用戶名與密碼 - SELECT
選擇文件夾 - EXAMINE
選擇文件夾只讀方式 - CREATE
創(chuàng)建一個(gè)文件夾 - DELETE
刪除一個(gè)文件夾 - RENAME
重命名一個(gè)文件 - SUBSCRIBE
訂閱指定的郵箱地址 - UNSUBSCRIBE
取消訂閱 - LIST
返回詳細(xì)的文件夾列表 - LSUB
返回訂閱的郵箱地址列表 - STATUS
請(qǐng)求返回指定郵箱文件夾的狀態(tài) - APPEND
追加一個(gè)狀態(tài),例如可以保存一封新的郵件 - CHECK
檢查當(dāng)前服務(wù)器狀態(tài)(例如:磁盤,內(nèi)存等) - CLOSE
永久刪除所有消息 - EXPUNGE
永久刪除所有消息,與CLOSE不同的是,將返回每個(gè)消息標(biāo)識(shí) - SEARCH
類似linux系統(tǒng)find命令,功能很強(qiáng)大可以按照不同條件搜索郵件 - FETCH
檢索與消息相關(guān)數(shù)據(jù),例如:獲取正文 - STORE
改變與消息相關(guān)數(shù)據(jù),例如:設(shè)置郵箱已讀、刪除狀態(tài)等 - COPY
拷貝指定的消息 - UID
返回UID列表用于fetch