IMAP
全稱是 Internet Mail Access Protocol,即交互式郵件存取協議,它是跟
POP3 相似郵件訪問標準協議之一。不一樣的是,開啓了
IMAP 後,您在電子郵件客戶端收取的郵件仍然保留在服務器上,同時在客戶端上的操做都會反饋到服務器上,如:刪除郵件,標記已讀等,服務器上的郵件也會作相應的動做。因此不管從瀏覽器登陸郵箱或者客戶端軟件登陸郵箱,看到的郵件以及狀態都是一致的。
與POP3的差別你們能夠看這裏html
郵件協議包括SMTP,POP3,IMAP。因爲SMTP和POP3這兩個協議網絡上介紹的比較多,包括命令的使用和PHP代碼的使用均可以搜的到,因此這篇文章主要講解怎麼樣使用命令來操做IMAP。git
想了解怎麼用命令來操做SMTP和POP3的朋友能夠移步到如下兩個地址github
端口 143/993 (telnet/SSL)瀏覽器
Port 143 (plain / no SSL) // 非SSL telnet <IP> 143 .... Port 993 (SSL) // SSL openssl s_client -connect <IP>:993 CONNECTED(00000003) depth=2 /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain ...
命令格式bash
命令輸入: <隨機字符串ID> command 響應: <隨機字符串ID> OK <ANSWER DETAIL> 例如: A1 login test@qq.com password A1 OK login successful
A1 便是 <隨機字符串ID>
,能夠是你定義的任何字符串,同時返回的文本也帶有這個字符串。服務器
非 SSL 示例網絡
$ telnet imap.qq.com 143 \* OK [CAPABILITY IMAP4 IMAP4rev1 ID AUTH=LOGIN NAMESPACE] QQMail IMAP4Server ready A1 LOGIN test@qq.com password A1 OK Success login ok A1 LIST "" "*" \* LIST (\NoSelect \HasChildren) "/" "&UXZO1mWHTvZZOQ-" \* LIST (\HasNoChildren) "/" "INBOX" \* LIST (\HasNoChildren) "/" "Sent Messages" \* LIST (\HasNoChildren) "/" "Drafts" \* LIST (\HasNoChildren) "/" "Deleted Messages" \* LIST (\HasNoChildren) "/" "Junk" \* LIST (\HasNoChildren) "/" "&UXZO1mWHTvZZOQ-/QQ&kK5O9ouilgU-" \* LIST (\HasNoChildren) "/" "&UXZO1mWHTvZZOQ-/&jURukA-" \* LIST (\HasNoChildren) "/" "&UXZO1mWHTvZZOQ-/&kK5O9l9SaGM-" \* LIST (\HasNoChildren) "/" "&g0l6Pw-"
SSL示例學習
$ openssl s_client -crlf -connect imap.qq.com:993 ... \* OK [CAPABILITY IMAP4 IMAP4rev1 ID AUTH=LOGIN NAMESPACE] QQMail IMAP4Server ready
登陸認證ID LOGIN <EMAIL> <PASSWORD>
ui
$ A1 LOGIN test@qq.com password A1 OK Success login ok
列出郵件文件夾LIST "<mailbox path>" "<search argument>"
code
<mailbox path>
郵箱路徑,若是爲" ", 則列出根目錄的全部文件夾<search argument>
是區分大小寫的,可爲 「」 或 「%」,「」匹配全部,「%」只匹配當前層
$ A1 LIST "" "*"
選擇一個文件夾
$ A1 SELECT INBOX \* 1254 EXISTS // 共存在1254封郵件 \* 0 RECENT // 最新的郵件 \* OK [UNSEEN 75] // 未讀 \* OK [UIDVALIDITY 1429146575] UID validity status \* OK [UIDNEXT 2475] Predicted next UID \* FLAGS (\Answered \Flagged \Deleted \Draft \Seen) \* OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)] Permanent flags A1 OK [READ-WRITE] SELECT complete
須要注意的是:
PHP
作郵箱檢測時,能夠藉助上面的方式來實現。PHP
檢測部分我已經寫好了代碼,能夠在github上查看。