如何使用Telnet测试IMAP协议

前言

针对邮箱开发过程中,经常需要调试一下邮箱连接,或者测试。

MAP协议采用对称的收发帧序列号作为一对儿收发数据帧的标识,从而防止接收数据混乱。每个会话的帧序列号都是按照升序增长。帧序列号由字母 数字组成,客户端生产的每个命令的帧序列号都不同。MAP协议采用对称的收发帧序列号作为一对儿收发数据帧的标识,从而防止接收数据混乱。每个会话的帧序列号都是按照升序增长。帧序列号由字母 数字组成,客户端生产的每个命令的帧序列号都不同。

如何操作

非SSL

telnet imap.mxhichina.com 143
telnet 邮箱IMAP服务地址 端口

出现以下情况,就是连接邮箱服务器了。

Trying 106.11.252.137...
Connected to imap.mxhichina.com.
Escape character is '^]'.
* OK AliYun IMAP Server Ready(10.182.144.32)

开始输入账号密码

a01 login xxxx.xxxx.com 123456
a01 OK LOGIN completed

SSL

openssl s_client -connect imap.163.com:993

IMAP命令

A02 LIST "" *           # 列出所有邮箱
A03 Select INBOX        # 选择收件箱
A04 Search ALL           #查询收件箱所有邮件
A05 Search new           #查询收件箱所有新邮件
A06 Fetch 5 full         #获取第5封邮件的邮件头
Search 参数说明

ALL
邮件中所有邮件;ANDing的默认初始关键词。
ANSWERED
带有/Answered标记位的邮件。
BCC <string>
在信封结构的BCC域包含有指定字符串的邮件。
BEFORE <date>
实际日期(忽视时间和时区)早于指定日期的邮件。
BODY <string>
在邮件的主体域包含有指定字符串的邮件。
CC <string>
在信封结构的CC域包含有指定字符串的邮件。
DELETED
带有/Deleted标记位的邮件。
DRAFT
带有/Draft标记位的邮件。
FLAGGED
带有/Flagged标记位的邮件。
FROM <string>
在信封结构的FROM域包含有指定字符串的邮件。
HEADER <field-name> <string>
带有一个含指定field-name([RFC-2822]中定义)的头部、且在该头部(它跟在colon之后)的文本中包含指定字符串的邮 件。如果将要检索的字符串(参数中的string)长度为零,那么,它将匹配带有一个含指定field-name、内容可有可无的头部行的所有邮件。
KEYWORD <flag>
带有指定关键词标记位的邮件。
LARGER <n>
带有一个[RFC-2822](定义)的、大于指定字节数的大小的邮件。
NEW
带有/Recent标记位,但不带有/Seen标记的邮件。它在功能上等效于“(RECENT UNSEEN)”。
NOT <search-key>
不符合指定检索关键词的邮件。
OLD
不带有/Recent标记位的邮件。它在功能上等效于“NOT RECENT”(与“NOT NEW”相反)。
ON <date>
实际日期(忽视时间和时区)在指定日期的邮件。
OR <search-key1> <search-key2>
符合任意一个检索关键词的邮件。
RECENT
带有/Recent标记位的邮件。
SEEN
带有/Seen标记位的邮件。
SENTBEFORE <date>
[RFC-2822]Date: header(忽视时间和时区)早于指定日期的邮件。
SENTON <date>
[RFC-2822]Date: header (忽视时间和时区)在指定日期的邮件。
SENTSINCE <date>
[RFC-2822]Date: header (忽视时间和时区)在指定日期或者晚于指定日期的邮件。
SINCE <date>
实际日期(忽视时间和时区)在指定日期或者晚于指定日期的邮件。
SMALLER <n>
带有一个[RFC-2822]的、小于指定字节数大小的邮件。
SUBJECT <string>
在信封结构的SUBJECT域含有指定字符串的邮件。
TEXT <string>
在邮件的头部或者主体含有指定字符串的邮件。
TO <string>
在信封结构的TO域含有指定字符串的邮件。
UID <sequence set>
带有指定唯一标识符集相应的唯一标识符的邮件。序列集顺序排列是允许的。
UNANSWERED
不带有/Answered标记位的邮件。
UNDELETED
不带有/Deleted标记位的邮件。
UNDRAFT
不带有/Draft标记位的邮件。
UNFLAGGED
不带有/Flagged标记位的邮件。
UNKEYWORD <flag>
不带有指定关键词标记位的邮件。
UNSEEN
不带有/Seen标记位的邮件。

获取邮件参数详解

FETCH <mail id><datanames>

ALL:只返回按照一定格式的邮件摘要,包括邮件标志、RFC822.SIZE、自身的时间和信封信息。IMAP客户机能够将标准邮件解析成这些信息并显示出来。
BODY:只返回邮件体文本格式和大小的摘要信息。IMAP客户机可以识别这些细腻,并向用户显示详细的关于邮件的信息。其实是一些非扩展的BODYSTRUCTURE的信息。
FAST:只返回邮件的一些摘要,包括邮件标志、RFC822.SIZE、和自身的时间。
FULL:同样的还是一些摘要信息,包括邮件标志、RFC822.SIZE、自身的时间和BODYSTRUCTURE的信息。
BODYSTRUCTUR:是邮件的[MIME-IMB]的体结构。这是服务器通过解析[RFC-2822]头中的[MIME-IMB]各字段和[MIME-IMB]头信息得出来的。包括的内容有:邮件正文的类型、字符集、编码方式等和各附件的类型、字符集、编码方式、文件名称等等。
ENVELOPE:信息的信封结构。是服务器通过解析[RFC-2822]头中的[MIME-IMB]各字段得出来的,默认各字段都是需要的。主要包括:自身的时间、附件数、收件人、发件人等。
FLAGS:此邮件的标志。
INTERNALDATE:自身的时间。
RFC822.SIZE:邮件的[RFC-2822]大小
RFC822.HEADER:在功能上等同于BODY.PEEK[HEADER],
RFC822:功能上等同于BODY[]。
RFC822.TEXT:功能上等同于BODY[TEXT]
UID:返回邮件的UID号,UID号是唯一标识邮件的一个号码。
BODY[section] <<partial>>:返回邮件的中的某一指定部分,返回的部分用section来表示,section部分包含的信息通常是代表某一部分的一个数字或者是下面的某一个部分:HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, and TEXT。如果section部分是空的话,那就代表返回全部的信息,包括头信息。
BODY[HEADER]返回完整的文件头信息。
BODY[HEADER.FIELDS ()]:在小括号里面可以指定返回的特定字段。
BODY[HEADER.FIELDS.NOT ()]:在小括号里面可以指定不需要返回的特定字段。
BODY[MIME]:返回邮件的[MIME-IMB]的头信息,在正常情况下跟BODY[HEADER]没有区别。
BODY[TEXT]:返回整个邮件体,这里的邮件体并不包括邮件头。

参考:

IMAP命令与分析

Show Comments