Selected State(选中邮件夹后的命令)
CHECK
命令介绍:
CHECK命令用来在邮箱设置一个检查点。没有参数。就是IMAP中的sync命令。任何未完成的操作,例如从服务器内存向硬盘写数据,都将会被做完以保持邮箱的一致性状态。该命令确保乃村中的磁盘缓冲数据都被写到了磁盘上。
命令执行:
[root@localhost src]# telnet localhost 143
..........
a check(没有邮箱用户login前执行)
提示失败,需先有邮箱login,并且select邮件夹后,才能使用check命令
a login tang@188.test.net 111111
.....
A select INBOX
.....
a check (命令名大写或小写)
a OK Check completed.
成功
CLOSE
命令介绍:
CLOSE命令表示Client结束对当前Folder(文件夹/邮箱)的访问,关闭邮箱该邮箱中所有标志为、DELETED的邮件就被从物理上删除。CLOSE没有命令参数。随后可以SELECT另一Folder。
命令执行:
[root@localhost src]# telnet localhost 143
..........
a close(没有邮箱用户login前执行)
提示失败,需先有邮箱login,并且select邮件夹后,才能使用close命令
a login tang@188.test.net 111111
.....
A select INBOX
.....
a CLOSE (命令名大写或小写)
a OK Check completed.
成功:
1、所有标记为deleted的邮件都将被实际删除:
A、物理邮件没有删掉
B、uisdb.mail表中的status更新为2(删除)
C、delete_time为对应执行a close实际删除邮件的时间
D、这时再执行a search all等命令,将不再显示对应被删除的邮件
2、关闭该邮件夹的select状态,若要继续访问该邮件夹,需要重新select
EXPUNGE
命令介绍:
EXPUNGE命令在不关闭邮箱的情况下删除所有的标志为、DELETED的邮件。EXPUNGE删除的邮件将不可以恢复。
命令执行:
[root@localhost src]# telnet localhost 143
..........
A EXPUNGE(没有邮箱用户login前执行)
提示失败,需先有邮箱login,并且select邮件夹后,才能使用expunge命令
a login tang@188.test.net 111111
.....
A select INBOX
.....
a expunge (命令名小写)
* 1 EXPUNGE
a OK Expunge completed.
成功:
1、所有标记为deleted的邮件都将被实际删除:
A、物理邮件没有删掉
B、uisdb.mail表中的status更新为2(删除)
C、delete_time为对应执行a expunge实际删除邮件的时间
D、这时再执行a search all等命令,将不再显示对应被删除的邮件
COPY <mail id><mailboxname>
命令介绍:
COPY命令可以把邮件从一个邮箱复制到另一个邮箱,两个参数:mail id是希望从活动邮箱中复制的邮件的标号,mailboxname是希望邮件被复制到的邮箱。
IAMP没有定义移动邮件的命令,移动操作相当于先把邮件复制到新邮箱中,然后对源邮箱中的邮件设置\DELETED标志。下一次执行检查点过后,新邮箱中的邮件被删除,新邮件就被显示出来。
命令执行:
[root@localhost src]# telnet localhost 143
..........
a copy 1 INBOX.c.1.2.3(没有邮箱用户login前执行)
提示失败,需先有邮箱login,并且select邮件夹后,才能使用copy命令
a login tang@188.test.net 111111
.....
A select INBOX
.....
a COPY 1 INBOX.c.1.2.3(命令名大写)
a OK Check completed.
成功,效果与复制邮件的接口命令相同,将收件箱中的第一封邮件(非删除状态的邮件)copy一条邮件记录至INBOX.c.1.2.3邮件夹对应的maildir_id:
A、xmid、size 、header、 location与源邮件相同
B、 recevie_time、id、maildir_id 、uid为对应新的值
C、system_flags为32
D、uisdb.maildir_id表中的next_id加1
E、select新邮件夹后,执行a search all 和fetch等命令可以获取对应邮件的信息
STORE <mail id><new attributes>
命令介绍:
STORE 命令用于修改指定邮件的属性,包括给邮件打上已读标记、删除标记,等等。STORE命令当前只有两个数据项类型可用,FLAGS:表示邮件的一组标志; FLAGS.SLIENT,表示一组邮件的标志,通过在两种数据项前加上加号或者减号可以进一步改变它们的执行情况,加号表示数据项的值添加到邮件中,减号表示将数据项的值从邮件中删除。
如:
A STORE 2:4 +FLAGS (\Deleted) /*冒号表示间隔的一个范围:给从2到4的邮件设置Deleted属性*/
命令执行:
[root@localhost src]# telnet localhost 143
..........
a store 1 +flags (\deleted)(没有邮箱用户login前执行)
提示失败,需先有邮箱login,并且select邮件夹后,才能使用check命令
a login tang@188.test.net 111111
.....
a STORE 1 +flags (\deleted) (命令名大写,参数使用小写)
* 1 FETCH (FLAGS (\Deleted \Seen))
a OK Store completed.
成功,uisdb.mail表中对应记录的system_flags(\Deleted位为1,若其它为0,则该字段值为8=001000)
这时:
若执行:a close,则system_flags对应变成9=001001,status更新为2(删除),delete_time为对应执行a close实际删除邮件的时间
若执行:a logout,则system_flags依然维持8=001000,下次执行a close时,再更新为以上的值
a store 2:5 +FLAGS (\SEEN)(命令名小写,参数使用大写)
* 2 FETCH (FLAGS (\Seen))
.........
* 5 FETCH (FLAGS (\Seen))
a OK Store completed.
成功,uisdb.mail表中对应记录(正常邮件2~5封)的system_flags(\Seen位为1,若其它为0,则该字段值为1=000001)
UID
命令介绍:
UID 命令和FETCH、COPY、STORE命令或者SEARCH命令一起使用,它允许这些命令使用邮件的UID号而不是在邮箱中的顺序号。UID号是唯一标识邮件系统中邮件的32位证书。通常这些命令都使用顺序号来标识邮箱中的邮件,使用UID可以使IMAP客户机记住不同IMAP会话中的邮件。
命令执行:
[root@localhost src]# telnet localhost 143
..........
a UID copy 20 INBOX.c.1.2.3(没有邮箱用户login前执行)
提示失败,需先有邮箱login,并且select邮件夹后,才能使用uid命令
a login tang@188.test.net 111111
.....
A select INBOX
.....
a search all
* SEARCH 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
a OK Search completed (0.000 secs).
a UID copy 20 INBOX.c.1.2.3 (命令名大写,收件箱只有19封邮件,将其中UID为20的邮件copy一份至邮件夹INBOX.c.1.2.3)
a OK Check completed.
成功,将收件箱中UID为20的邮件copy一份至邮件夹INBOX.c.1.2.3
a uid copy 1 INBOX.c.1.2.3(命令名小写,收件箱UID为1的邮件已经为删除状态)
a OK No messages copied.
失败,收件箱中UID为1的邮件已经为删除状态,无法copy
a uid fetch 20 body(配合fetch命令使用)
* 19 FETCH (UID 20 BODY (test mail))
a OK Fetch completed.
成功,读取收件箱中UID为20的邮件
a uid store 20 +flags (\deleted)(配合store命令使用)
* 19 FETCH (UID 0 FLAGS (\Deleted))
a OK Store completed.
成功,将收件箱中UID为20的邮件标记为deleted
FETCH <mail id><datanames>
命令介绍:
FETCH 命令用于读取邮件的文本信息,且仅用于显示的目的。包含两个参数,messageset:表示希望读取的邮件号列表,IAMP服务器邮箱中的每个邮件都有 一个唯一的ID标识,(邮件号列表参数可以是一个邮件号,也可以是由逗号分隔的多个邮件号,或者由冒号间隔的一个范围),IMAP服务器返回邮件号列表中 全部邮件的指定数据项内容。