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


问题内容

我有一个使用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),则可以打印这些,但是我需要将其捕获到变量中以进行进一步的日志记录和处理。

谢谢并恭祝安康,

拉吉


问题答案:

如果您在实例上使用sendmail方法SMTP,则它将返回

一本字典,每个被拒绝的收件人都有一个条目。每个条目都包含SMTP错误代码的元组和服务器发送的附带错误消息。

如果您在同一类上使用docmd方法,它将返回

由数字响应代码和实际响应行组成的2元组(多行响应合并为一条长行。)