imap4协议
来源:互联网 发布:计算机如何编程 编辑:程序博客网 时间:2024/04/28 22:31
转于 http://bambooice.blog.hexun.com/33960499_d.html
IMAP4协议处理状态及工作流程
任何时候,每个IMAP4服务处理线程都处于4种处理状态的其中一种。大部分的IMAP4命令都只会在某种处理状态下才有效。如果IMAP4客户端软件企图在不恰当的状态下发送命令,则服务器将返回协议错误的失败信息,如BAD或NO等等。
非认证状态
在这个状态下,客户软件必须发出认证请求命令。在IMAP4连接建立时,服务器处理线程自动进入这个状态。
认证状态
在认证状态下,客户软件必须选择一个邮箱。这个状态在认证请求命令得到确认答复后进入,或在预认证连接建立后直接进入。
已选择状态
这个状态表示IMAP4客户软件已经选择了某一Folder。在这个状态下可以发送所有检索邮件内容的命令。
离线状态
在这个状态,连接已经终止,服务器将关闭这个连接。客户端软件可以发出命令或由服务器强制进入这个状态。
IMAP命令概要
IMAP协议中的命令与POP3中最大的不同是每条命令前都一有一个由Client指定的标签,同一个会话中,Client发出的每条命令都会有不同的标签;而Server对每个Client发出的命令都必须以相同的标签作应答。这就使得IMAP会话中Client可以同时送出多个命令,而Server则完全可以并发处理这些命令,不必等待上一个命令执行完毕才处理下一个。
IMAP协议中的命令与POP3中最大的不同是每条命令前都一有一个由Client指定的标签,同一个会话中,Client发出的每条命令都会有不同的标签;而Server对每个Client发出的命令都必须以相同的标签作应答。这就使得IMAP会话中Client可以同时送出多个命令,而Server则完全可以并发处理这些命令,不必等待上一个命令执行完毕才处理下一个。
下面是若干常用的IMAP命令
LOGIN username password
LOGIN命令用于登录IMAP服务器,与POP3显著不同的是用户名和口令同时作为参数提交给Server,而POP3完成同样的操作需要USER和PASS两条命令。
C: a001 LOGIN SMITH SESAME
S: a001 OK LOGIN completed
S: a001 OK LOGIN completed
CREATE folder
CREATE可以创建指定名字的文件夹。文件夹名字通常是带路径的文件夹全名。
C: A003 CREATE owatagusiam/
S: A003 OK CREATE completed
C: A004 CREATE owatagusiam/blurdybloop
S: A004 OK CREATE completed
DELETE folder
DELETE命令删除指定名字的文件夹。文件夹名字通常是带路径的文件夹全名。
C: A683 DELETE blurdybloop
S: A683 OK DELETE completed
C: A684 DELETE foo
S: A684 NO Name foo has inferior hierarchical names
C: A685 DELETE foo/bar
S: A685 OK DELETE Completed
RENAME old folder new folder
RENAME命令可以修改文件夹的名称。
C: A683 RENAME blurdybloop sarasoop
S: A683 OK RENAME completed
C: A684 RENAME foo zowie
S: A684 OK RENAME Completed
RENAME命令可以修改文件夹的名称。
C: A683 RENAME blurdybloop sarasoop
S: A683 OK RENAME completed
C: A684 RENAME foo zowie
S: A684 OK RENAME Completed
LIST BASE template
LIST命令用于列出邮箱中已有的文件夹,有点像操作系统的列目录命令。这个命令可以包含起始的路径位置和需要列出的文件夹所符合的特征,可以使用通配符 * 。
C: A101 LIST
S: * LIST (/Noselect)
S: A101 OK LIST Completed
C: A102 LIST #news.comp.mail.misc
S: * LIST (/Noselect) #news.
S: A102 OK LIST Completed
C: A103 LIST /usr/staff/jones
S: * LIST (/Noselect) /
S: A103 OK LIST Completed
C: A202 LIST ~/Mail/ %
S: * LIST (/Noselect) ~/Mail/foo
S: * LIST () ~/Mail/meetings
S: A202 OK LIST completed
LIST命令用于列出邮箱中已有的文件夹,有点像操作系统的列目录命令。这个命令可以包含起始的路径位置和需要列出的文件夹所符合的特征,可以使用通配符 * 。
C: A101 LIST
S: * LIST (/Noselect)
S: A101 OK LIST Completed
C: A102 LIST #news.comp.mail.misc
S: * LIST (/Noselect) #news.
S: A102 OK LIST Completed
C: A103 LIST /usr/staff/jones
S: * LIST (/Noselect) /
S: A103 OK LIST Completed
C: A202 LIST ~/Mail/ %
S: * LIST (/Noselect) ~/Mail/foo
S: * LIST () ~/Mail/meetings
S: A202 OK LIST completed
APPEND folder attributes size mail data
APPEND命令允许Client上载一个邮件到指定的Folder中。命令中包含了新邮件的属性、大小,随后是邮件数据。
C: A003 APPEND saved-messages (/Seen) {310}
C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
C: From: Fred Foobar <[email]foobar@Blurdybloop.COM[/email]>
C: Subject: afternoon meeting
C: To: [email]mooch@owatagu.siam.edu[/email]
C: Message-Id: <[email]B27397-0100000@Blurdybloop.COM[/email]>
C: MIME-Version: 1.0
C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
C:
C: Hello Joe, do you think we can meet at 3:30 tomorrow?
C:
S: A003 OK APPEND completed
SELECT folder
SELECT命令让Client选定某个Folder,表示即将对该Folder内的邮件作操作。
C: A142 SELECT INBOX
S: * 172 EXISTS
S: * 1 RECENT
S: * OK [UNSEEN 12] Message 12 is first unseen
S: * OK [UIDVALIDITY 3857529045] UIDs valid
S: * FLAGS (/Answered /Flagged /Deleted /Seen /Draft)
S: * OK [PERMANENTFLAGS (/Deleted /Seen /*)] Limited
S: A142 OK [READ-WRITE] SELECT completed
FETCH …
FETCH命令是IMAP协议里最复杂的命令。FETCH的命令参数很多、很复杂,难以一一列举,但基本的特征是允许将邮件按照MIME结构拆解为零碎的部件来提取。例如,可以利用FETCH命令提取邮件头、某一个附件、或某一邮件附件头部的某一字段,等等。
STORE mail id new attributes
STORE命令用于修改指定邮件的属性,包括给邮件打上已读标记、删除标记,等等。
C: A003 STORE 2:4 +FLAGS (/Deleted)
S: * 2 FETCH FLAGS (/Deleted /Seen)
S: * 3 FETCH FLAGS (/Deleted)
S: * 4 FETCH FLAGS (/Deleted /Flagged /Seen)
S: A003 OK STORE completed
STORE命令用于修改指定邮件的属性,包括给邮件打上已读标记、删除标记,等等。
C: A003 STORE 2:4 +FLAGS (/Deleted)
S: * 2 FETCH FLAGS (/Deleted /Seen)
S: * 3 FETCH FLAGS (/Deleted)
S: * 4 FETCH FLAGS (/Deleted /Flagged /Seen)
S: A003 OK STORE completed
CLOSE
CLOSE命令表示Client结束对当前Folder的访问,随后可以SELECT另一Folder。
C: A341 CLOSE
S: A341 OK CLOSE completed
CLOSE命令表示Client结束对当前Folder的访问,随后可以SELECT另一Folder。
C: A341 CLOSE
S: A341 OK CLOSE completed
EXPUNGE
EXPUNGE将邮箱中所有打了删除标记的邮件彻底删除。EXPUNGE删除的邮件将不可以恢复。
C: A202 EXPUNGE
S: * 3 EXPUNGE
S: * 3 EXPUNGE
S: * 5 EXPUNGE
S: * 8 EXPUNGE
S: A202 OK EXPUNGE completed
EXPUNGE将邮箱中所有打了删除标记的邮件彻底删除。EXPUNGE删除的邮件将不可以恢复。
C: A202 EXPUNGE
S: * 3 EXPUNGE
S: * 3 EXPUNGE
S: * 5 EXPUNGE
S: * 8 EXPUNGE
S: A202 OK EXPUNGE completed
LOGOUT
LOGOUT命令结束本次IMAP会话。
C: A023 LOGOUT
S: * BYE IMAP4rev1 Server logging out
S: A023 OK LOGOUT completed
(Server and client then close the connection)
IMAP4会话实例
S: * OK IMAP4rev1 Service Ready
C: a001 login mrc secret
S: a001 OK LOGIN completed
C: a002 select inbox
S: * 18 EXISTS
S: * FLAGS (/Answered /Flagged /Deleted /Seen /Draft)
S: * 2 RECENT
S: * OK [UNSEEN 17] Message 17 is the first unseen message
S: * OK [UIDVALIDITY 3857529045] UIDs valid
S: a002 OK [READ-WRITE] SELECT completed
C: a003 fetch 12 full
S: * 12 FETCH (FLAGS (/Seen) INTERNALDATE 17-Jul-1996 02:44:25 -0700
RFC822.SIZE 4286 ENVELOPE (Wed, 17 Jul 1996 02:23:25 -0700 (PDT) IMAP4rev1 WG mtg summary and minutes
((Terry Gray NIL gray cac.washington.edu))
((Terry Gray NIL gray cac.washington.edu))
((Terry Gray NIL gray cac.washington.edu))
((NIL NIL imapcac.washington.edu))
((NIL NIL minutes CNRI.Reston.VA.US)
(John Klensin NIL KLENSIN INFOODS.MIT.EDU)) NIL NIL [email]B27397-0100000@cac.washington.edu[/email])
BODY (TEXT PLAIN (CHARSET US-ASCII) NIL NIL 7BIT 3028 92))
S: a003 OK FETCH completed
C: a004 fetch 12 body[header]
S: * 12 FETCH (BODY[HEADER] {350}
S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT)
S: From: Terry Gray <[email]gray@cac.washington.edu[/email]>
S: Subject: IMAP4rev1 WG mtg summary and minutes
S: To: [email]imap@cac.washington.edu[/email]
S: cc: [email]minutes@CNRI.Reston.VA.US[/email], John Klensin <[email]KLENSIN@INFOODS.MIT.EDU[/email]>
S: Message-Id: <[email]B27397-0100000@cac.washington.edu[/email]>
S: MIME-Version: 1.0
S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
S:
S: )
S: a004 OK FETCH completed
C: a005 store 12 +flags /deleted
S: * 12 FETCH (FLAGS (/Seen /Deleted))
S: a005 OK +FLAGS completed
C: a006 logout
S: * BYE IMAP4rev1 server terminating connection
S: a006 OK LOGOUT completed
((Terry Gray NIL gray cac.washington.edu))
((NIL NIL imapcac.washington.edu))
((NIL NIL minutes CNRI.Reston.VA.US)
(John Klensin NIL KLENSIN INFOODS.MIT.EDU)) NIL NIL [email]B27397-0100000@cac.washington.edu[/email])
BODY (TEXT PLAIN (CHARSET US-ASCII) NIL NIL 7BIT 3028 92))
S: a003 OK FETCH completed
C: a004 fetch 12 body[header]
S: * 12 FETCH (BODY[HEADER] {350}
S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT)
S: From: Terry Gray <[email]gray@cac.washington.edu[/email]>
S: Subject: IMAP4rev1 WG mtg summary and minutes
S: To: [email]imap@cac.washington.edu[/email]
S: cc: [email]minutes@CNRI.Reston.VA.US[/email], John Klensin <[email]KLENSIN@INFOODS.MIT.EDU[/email]>
S: Message-Id: <[email]B27397-0100000@cac.washington.edu[/email]>
S: MIME-Version: 1.0
S: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
S:
S: )
S: a004 OK FETCH completed
C: a005 store 12 +flags /deleted
S: * 12 FETCH (FLAGS (/Seen /Deleted))
S: a005 OK +FLAGS completed
C: a006 logout
S: * BYE IMAP4rev1 server terminating connection
S: a006 OK LOGOUT completed
- imap4协议
- IMAP4协议简介
- IMAP4
- MAPI 、 IMAP4、 POP3、 SMTP 都是什么协议?
- SMTP、POP3、IMAP4 都是什么协议?
- IMAP4协议介绍 工作原理
- 在Exchange server 2007中启用pop3和IMAP4协议访问
- 在Exchange server 2007中管理pop3和IMAP4协议访问
- 在Exchange server 2007中管理pop3和IMAP4协议访问
- 在Exchange server 2007中启用pop3和IMAP4协议访问
- Linux+IMAP4.7c1安装脚本
- Exchange 2007 打开POP3 及 IMAP4端口
- c#中用LumiSoft类库实现IMAP4接收…
- exchange 2007 imap4 proxy issue(get "no login" response by basic login).
- 协议
- 协议
- 协议
- 协议
- 职场英语七--确认
- Fc7下利用KDevelop3.5.2平台来编译开发QT4程序的完全解决
- 大陆籍核心高管层到位,SMIC能否给业界惊喜?
- Delphi部分断点不能跟踪
- C#生成随机验证码
- imap4协议
- 世界著名激励大师约翰·库缇斯的传奇人生
- 大家好
- hdu 1159 (最长公共子序列)
- 正则表达式笔记
- Oracle Cursors语法总结
- ArcSDE连接远程Oracle安装方法
- 爸爸
- 一个蛮有用的字符串解析函数