如何使用smtplib的SMTP.sendmail发送邮件后获取服务器回复

7 投票
1 回答
10466 浏览
提问于 2025-04-16 04:44

我有一个用Python的smtplib发送邮件的程序。邮件发送部分已经正常工作了,但我还需要在邮件发送后获取服务器返回的消息。例如,postfix在邮件排队后会返回以下消息:

reply: '250 2.0.0 Ok: queued as EB83821273B\r\n'
reply: retcode (250); Msg: 2.0.0 Ok: queued as EB83821273B
data: (250, '2.0.0 Ok: queued as EB83821273B')

我真正感兴趣的是错误代码(250)和队列ID(EB83821273B)。如果我设置set_debuglevel(1),我可以打印这些信息,但我需要把它们存储在一个变量里,以便后续记录和处理。

谢谢,祝好,

raj

1 个回答

5

如果你在一个 SMTP 实例上使用 sendmail 方法,它会返回

一个字典,每个拒绝接收邮件的收件人都会有一个条目。每个条目里包含一个元组,里面有SMTP错误代码和服务器发送的错误信息。

如果你在同一个类上使用 docmd 方法,它会返回

一个包含两个元素的元组,第一个是数字响应代码,第二个是实际的响应内容(如果响应内容有多行,会合并成一行)。

撰写回答