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上查看。