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

Python 如何在使用smtplib SMTP.sendmail发送邮件后获取服务器回复,python,smtplib,Python,Smtplib,我有一个使用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') 我真正感兴趣的是

我有一个使用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

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

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

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

由数字响应代码和实际响应行组成的2元组(多行响应连接成一条长行)


还值得注意的是,此方法可能会引发以下异常:SMTPHeloError、SMTPRecipientsRefused、SMTPSenderRefused或smtpdataerror如果使用docmd方法,则基本上必须逐个命令重新实现sendmail命令,对吗?
sendmail
在状态代码为250时返回空字典(一切正常)。因此,当您使用
sendmail
时,似乎不可能获得服务器响应,并且没有发生错误。