You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让imaplib/imap_tools记录原始IMAP命令及服务器响应?

查看Python IMAP脚本的原始命令与服务器响应

当然可以,以下是imaplib和imap_tools两种库的具体实现方式:

使用imaplib

imaplib内置了debug模式,开启后会直接打印所有与服务器交互的原始命令和响应:

  • 开启debug:创建IMAP连接实例后,设置debug属性为4(该级别足以输出完整的原始交互内容,数字越大输出越详细)
  • 示例代码:
import imaplib

# 建立SSL连接
imap_conn = imaplib.IMAP4_SSL('imap.example.com')
# 开启debug,打印所有原始命令与响应
imap_conn.debug = 4

# 执行后续操作(登录、选邮箱等)
imap_conn.login('your_email@example.com', 'your_auth_code')
imap_conn.select('INBOX')
# 这里可以添加更多操作,比如搜索邮件
_, data = imap_conn.search(None, 'ALL')

imap_conn.logout()

运行后,控制台会输出所有发送的IMAP命令、服务器返回的原始响应,包括命令标记、状态码和完整内容,方便你与手动发送的命令做对比。

使用imap_tools

imap_tools基于imaplib封装,可通过两种方式获取原始交互内容:

方法1:开启底层imaplib的debug

直接操作库返回的底层imaplib实例,开启debug模式,这是获取完整原始交互的最优方式:

from imap_tools import MailBox

with MailBox('imap.example.com').login('your_email@example.com', 'your_auth_code', 'INBOX') as mailbox:
    # 开启底层imap实例的debug
    mailbox.imap.debug = 4
    # 执行业务操作,比如获取邮件
    for message in mailbox.fetch():
        print(message.subject)

方法2:配置logging模块

imap_tools使用Python标准logging模块,开启DEBUG级别日志可输出部分交互信息,但不如方法1详细:

import logging
from imap_tools import MailBox

# 配置日志级别为DEBUG
logging.basicConfig(level=logging.DEBUG, format='%(levelname)s: %(message)s')

with MailBox('imap.example.com').login('your_email@example.com', 'your_auth_code', 'INBOX') as mailbox:
    for message in mailbox.fetch():
        print(message.subject)

内容的提问来源于stack exchange,提问作者PaulJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:28:15