阿里郵箱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客戶端證書)進行了身份驗證。