IMAP简介IMAP的全称是InternetMailAccessProtocol,是一种交互式邮件访问协议。它是一种类似于POP3的标准邮件访问协议。不同的是开启IMAP后,你在邮件客户端收到的邮件仍然保存在服务器上,同时客户端的操作也会反馈给服务器,比如:删除邮件,标记为已读等,服务器上的Mail将相应地执行操作。因此,无论是从浏览器登录邮箱还是客户端软件登录邮箱,看到的邮件和状态都是一致的。您可以在此处查看与POP3的区别。邮件协议包括SMTP、POP3和IMAP。由于SMTP和POP3这两个协议在网上介绍的比较多,包括命令的使用和PHP代码的使用都可以搜索到,所以本文主要讲解如何使用命令操作IMAP。想知道如何使用命令操作SMTP和POP3的朋友可以移步以下两个地址详细讲解邮件实现(二)------手动体验smtp和pop3协议协议基础:SMTP:使用Telnet来学习SMTP协议IMAP命令Port143/993(telnet/SSL)Port143(plain/noSSL)//non-SSLtelnet143....Port993(SSL)//SSLopenssls_client-connect:993CONNECTED(00000003)depth=2/C=US/O=GeoTrustInc./CN=GeoTrustGlobalCAverifyerror:num=20:unabletogetlocalissuercertificateverifyreturn:0---Certificatechain...命令格式命令输入:<随机字符串ID>命令响应:<随机字符串ID>OK例如:A1logintest@qq.compasswordA1OKloginsuccessfulA1is,可以任意你定义了String,返回的文本也有这个字符串。非SSL示例$telnetimap.qq.com143\*OK[CAPABILITYIMAP4IMAP4rev1IDAUTH=LOGINNAMESPACE]QQMailIMAP4ServerreadyA1LOGINtest@qq.compasswordA1OKSuccessloginokA1LIST"""*"\*LIST(\NoSelect\HasChildren)"/""&UXZO1mWHTvZZOQ-"\*LIST(\HasNoChildren)"/""收件箱"\*LIST(\HasNoChildren)"/""已发送消息"\*LIST(\HasNoChildren)"/"“草稿”\*LIST(\HasNoChildren)“/”“已删除的消息”\*LIST(\HasNoChildren)“/”“垃圾”\*LIST(\HasNoChildren)“/”“&UXZO1mWHTvZZOQ-/QQ&kK5O9ouilgU-”\*LIST(\HasNoChildren)"/""&UXZO1mWHTvZZOQ-/&jURukA-"\*LIST(\HasNoChildren)"/""&UXZO1mWHTvZZOQ-/&kK5O9l9SaGM-"\*LIST(\HasNoChildren)"/""&g0l6Pw-"SSL演示例$openssls_client-crlf-connectimap.qq.com:993...\*OK[CAPABILITYIMAP4IMAP4rev1IDAUTH=LOGINNAMESPACE]QQMailIMAP4Serverready登录认证IDLOGIN$A1LOGINtest@qq.compasswordA1OK登录成功ok列发出邮件文件夹LIST""""邮箱路径,如果是"",将列出根目录下的所有文件夹。区分大小写,可以是""或"%",""匹配全部,"%"只匹配当前层$A1LIST"""*"选择一个文件夹$A1SELECTINBOX\*1254EXISTS//共有1254封邮件\*0RECENT//最新的邮件\*OK[UNSEEN75]//Unread\*OK[UIDVALIDITY1429146575]UID有效性状态\*OK[UIDNEXT2475]预测下一个UID\*FLAGS(\Answered\Flagged\Deleted\Draft\Seen)\*OK[PERMANENTFLAGS(\*\Answered\Flagged\Deleted\Draft\Seen)]PermanentflagsA1OK[READ-WRITE]SELECTcomplete注:IMAP命令与POP3类似,主要区别在于登录认证使用PHP进行邮箱检测,可以使用以上方法实现,PHP检测部分的代码我已经写好,可以在github上查看,也可以获取服务器中的所有邮件