阿里邮箱IMAP命令集
CAPABILITY 获取服务器支持的功能列表。
LOGIN 用户登录,提供用户名和密码。
SELECT 选择一个邮箱,使其成为当前操作的目标。
NOOP 不执行任何操作,常用于保持连接活跃。
CREATE 创建一个新的邮箱。
DELETE 删除一个邮箱。
RENAME 重命名一个邮箱。
SUBSCRIBE 订阅一个邮箱,使其出现在用户的邮箱列表中。
UNSUBSCRIBE 取消订阅一个邮箱。
LIST 列出邮箱或子邮箱。
LSUB 列出已订阅的邮箱。
STATUS 获取指定邮箱的状态信息,如消息数量、未读消息数量等。
APPEND 将消息追加到指定的邮箱中。
FETCH 检索消息或消息的一部分。
STORE 修改消息的标志。
COPY 复制消息到另一个邮箱。
SEARCH 搜索满足特定条件的消息。
UID 使用唯一标识符(UID)执行命令,如 UID FETCH 和 UID STORE。
LOGOUT 断开与服务器的连接。
Python代码示例
风险提示:下述代码在Python 3.11.9进行的测试,用于生产环境之前请务必先做好测试。
# -*- coding: utf-8 -*-
import imaplib
import sys
# 配置 IMAP 服务器
imap_server = 'imap.qiye.aliyun.com'
username = 'xxxxxx'
password = 'xxxxxx'
port = 993
def test_imap_commands():
try:
# 连接到 IMAP 服务器
# mail = imaplib.IMAP4(imap_server, 143) # 使用非加密连接
mail = imaplib.IMAP4_SSL(imap_server, port) # 使用 SSL 加密连接
print(f"Connected to {imap_server}")
# 发送 CAPABILITY 命令,获取服务器支持的功能
response = mail.capability()
print(f"CAPABILITY Response: {response}")
print(response)
# 登录到服务器
response = mail.login(username, password)
print(f"Login Response: {response}")
# 选择 INBOX 邮箱
response = mail.select('INBOX')
print(f"SELECT Response: {response}")
# 测试 NOOP 命令,用于保持连接活跃
response = mail.noop()
print(f"NOOP Response: {response}")
# 测试 CREATE 命令,创建一个新文件夹
response = mail.create('test_folder')
print(f"CREATE Response: {response}")
# 测试 RENAME 命令,重命名文件夹
response = mail.rename('test_folder', 'new_folder')
print(f"RENAME Response: {response}")
# 测试 DELETE 命令,删除一个文件夹
response = mail.delete('new_folder')
print(f"DELETE Response: {response}")
# 测试 SUBSCRIBE 命令,订阅一个文件夹
response = mail.subscribe('test_folder')
print(f"SUBSCRIBE Response: {response}")
# 测试 UNSUBSCRIBE 命令,取消订阅一个文件夹
response = mail.unsubscribe('test_folder')
print(f"UNSUBSCRIBE Response: {response}")
# 测试 LIST 命令,列出所有文件夹
response = mail.list()
print(f"LIST Response: {response}")
# 测试 LSUB 命令,列出已订阅的文件夹
response = mail.lsub()
print(f"LSUB Response: {response}")
# 测试 STATUS 命令,获取邮箱的状态信息
response = mail.status('INBOX', '(MESSAGES UNSEEN)')
print(f"STATUS Response: {response}")
# 测试 APPEND 命令,向指定邮箱追加邮件
message = b'Subject: Test Email\r\n\r\nThis is a test email.\r\n'
response = mail.append('INBOX', None, None, message)
print(f"APPEND Response: {response}")
# 测试 FETCH 命令,获取邮件内容
response = mail.fetch('1', '(BODY[HEADER.FIELDS (SUBJECT)])')
print(f"FETCH Response: {response}")
# 测试 STORE 命令,修改邮件标志
response = mail.store('1', '+FLAGS', '\\Seen') # 修改为已读。其他:\\Deleted 彻底删除
print(f"STORE Response: {response}")
# 测试 COPY 命令,移动邮件到另一个文件夹,不是复制
response = mail.copy('2', 'folderA/11/111')
print(f"COPY Response: {response}")
# 测试 UID COPY 命令,使用唯一标识符移动邮件,不是复制
response = mail.uid('COPY', '2', 'folderA')
print(f"UID COPY Response: {response}")
# 测试 SEARCH 命令,搜索符合条件的邮件
response = mail.search(None, 'ALL')
print(f"SEARCH Response: {response}")
# 测试 UID 命令,使用唯一标识符获取邮件内容
response = mail.uid('FETCH', '1', '(BODY[HEADER.FIELDS (SUBJECT)])')
print(f"UID FETCH Response: {response}")
# 断开连接
response = mail.logout()
print(f"LOGOUT Response: {response}")
except imaplib.IMAP4.error as e:
print(f"IMAP Error: {e}")
sys.exit(1)
# 测试 IMAP 服务器命令
test_imap_commands()
运行结果
CAPABILITY(服务器支持的功能列表)
IMAP4rev1:
表示服务器支持IMAP4rev1协议,这是IMAP4的一个修订版本,提供了更多的功能和改进。
IDLE:
表示服务器支持IDLE命令,允许客户端在不轮询的情况下接收新邮件的通知。
XLIST:
表示服务器支持XLIST扩展,用于列出邮箱的扩展信息。
UIDPLUS:
表示服务器支持UIDPLUS扩展,提供了对UID操作的更多功能,如COPY命令。
ID:
表示服务器支持ID命令,允许客户端获取服务器的标识信息。
SASL-IR:
表示服务器支持SASL初始响应,可以在认证过程中发送初始响应数据。
AUTH=XOAUTH:
表示服务器支持XOAUTH认证机制,这是一种OAuth 1.0a的认证方式。
AUTH=XOAUTH2:
表示服务器支持XOAUTH2认证机制,这是一种OAuth 2.0的认证方式。
AUTH=EXTERNAL:
表示服务器支持EXTERNAL认证机制,通常用于客户端已经通过其他方式(如SSL/TLS客户端证书)进行了身份验证。