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

使用Python smtplib发送邮件时如何查看SMTP通信日志

smtplib查看完整SMTP交互会话的方法

直接使用smtplib内置的调试开关即可实现完整会话日志的输出,不需要额外依赖第三方工具。

方法1:直接打印日志到控制台

在初始化SMTP连接对象后,调用set_debuglevel(1)方法,所有客户端与服务器的交互报文会直接输出到控制台,包含完整的命令发送、响应接收、数据传输内容。
示例代码如下:

import smtplib
from email.mime.text import MIMEText

# 构造邮件内容(和你的原有逻辑一致即可)
mail_content = MIMEText("测试邮件内容", "plain", "utf-8")
mail_content["From"] = "your_sender@example.com"
mail_content["To"] = "your_receiver@example.com"
mail_content["Subject"] = "测试邮件"

# 初始化SMTP连接
smtp_conn = smtplib.SMTP("smtp.example.com", 25)
# 开启调试模式,参数设为1输出所有交互日志,设为2会额外打印时间戳
smtp_conn.set_debuglevel(1)

# 后续业务逻辑和原有代码一致
smtp_conn.login("your_account", "your_password")
smtp_conn.sendmail("your_sender@example.com", ["your_receiver@example.com"], mail_content.as_string())
smtp_conn.quit()

注意:该调试开关对普通SMTP连接、SMTP_SSL加密连接、开启STARTTLS的连接全部通用,不需要额外调整配置。

方法2:将日志保存到本地文件

如果不需要直接打印到控制台,可以重定向smtplib日志默认输出的stderr流,把日志写入到本地文件:

import sys
import smtplib

# 打开日志文件用于写入
log_fp = open("smtp_session.log", "w", encoding="utf-8")
# 重定向stderr到日志文件
origin_stderr = sys.stderr
sys.stderr = log_fp

# 初始化SMTP连接并开启调试
smtp_conn = smtplib.SMTP("smtp.example.com", 25)
smtp_conn.set_debuglevel(1)

# 执行业务逻辑...
smtp_conn.login("your_account", "your_password")
# 其他发送逻辑...
smtp_conn.quit()

# 恢复stderr并关闭文件
sys.stderr = origin_stderr
log_fp.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:06