阿里邮箱IMAP场景示例:命令行方式获取邮件信息

IMAP(Internet Message Access Protocol,互联网消息访问协议)是一种用于电子邮件检索的协议。它允许用户从邮件服务器上检索邮件,并进行各种操作,如读取、删除、移动邮件等,而无需将邮件下载到本地设备。IMAP 的主要特点包括:

  • 服务器存储:邮件存储在服务器上,客户端可以随时访问。

  • 多设备同步:用户可以在多个设备上查看和管理同一邮箱中的邮件。

  • 离线访问:客户端可以缓存邮件,以便在离线时查看。

  • 选择性下载:客户端可以选择性地下载邮件的特定部分,例如只下载邮件头或附件。

  • 状态同步:邮件的阅读状态、标记等信息会同步到服务器,确保所有设备上的视图一致。

IMAP 最新版本为 IMAP4,广泛应用于现代电子邮件客户端和服务中。与 POP3(Post Office Protocol 3)相比,IMAP 提供了更强大的邮件管理和同步功能。

示例

为帮助您熟悉使用 IMAP 协议获取邮件信息的流程,提供以下 telnet 命令会话过程示例,来描述 IMAP 命令会话过程。

备注:其中 S 代表服务器,C 代表客户端。

场景流程:通过IMAP协议获取邮件主题。

image

说明

与SMTP不同,账号密码不用base64编码,因此正式环境使用,建议用993加密通道。

  • 非加密方式:

$telnet imap.qiye.aliyun.com 143
S:* OK AliYun IMAP Server Ready
C:a login test@example.com xxxxxxx
S:a OK LOGIN completed
C:b select INBOX
S:* 566 EXISTS
S:* 0 RECENT
S:* OK [UNSEEN 341]
S:* OK [UIDNEXT 799] Predicted next UID.
S:* OK [UIDVALIDITY 2] UIDs valid.
S:* FLAGS (\Answered \Seen \Deleted \Draft \Flagged)
S:* OK [PERMANENTFLAGS (\Answered \Seen \Deleted \Draft \Flagged)] Limited.
S:b OK [READ-WRITE] SELECT completed
C:c uid search all
S:* SEARCH  790 791 792 793 794 795 796 797 798
S:c OK SEARCH completed
C:d uid fetch 798 (body[header.fields (subject)])
S:* 566 FETCH (UID 798 BODY[HEADER.FIELDS (SUBJECT)] {23}
S:Subject: Test Email
S:
S:)
S:d OK FETCH completed
C:e logout
S:* BYE IMAP4rev1 Server logging out
S:e OK LOGOUT completed

  • 加密方式(需要openssl工具配合):

$openssl s_client -crlf -connect imap.qiye.aliyun.com:993
***
***
***
S:* OK AliYun IMAP Server Ready
C:a login test@example.com xxxxxxx
S:a OK LOGIN completed
C:b select INBOX
S:* 566 EXISTS
S:* 0 RECENT
S:* OK [UNSEEN 341]
S:* OK [UIDNEXT 799] Predicted next UID.
S:* OK [UIDVALIDITY 2] UIDs valid.
S:* FLAGS (\Answered \Seen \Deleted \Draft \Flagged)
S:* OK [PERMANENTFLAGS (\Answered \Seen \Deleted \Draft \Flagged)] Limited.
S:b OK [READ-WRITE] SELECT completed
C:c uid search all
S:* SEARCH 790 791 792 793 794 795 796 797 798
S:c OK SEARCH completed
C:d uid fetch 798 (body[header.fields (subject)])
S:* 566 FETCH (UID 798 BODY[HEADER.FIELDS (SUBJECT)] {23}
S:Subject: Test Email
S:
S:)
S:d OK FETCH completed
C:e logout
S:* BYE IMAP4rev1 Server logging out
S:e OK LOGOUT completed
S:closed