发送电子邮件后如何获取 SMTP headers?

How can I fetch the SMTP headers after sending email?

我可以使用 smtplib 轻松发送电子邮件。我正在努力阅读发送的实际 headers。具体来说,我想阅读 Message-IDReferences

起初我以为 sendmail() 会 return 他们,但事实并非如此。

发现我能够将 smtpilb.stderr 重定向到我自己的函数并解析出我需要的数据。有没有更好的方法可以让我说:

headers['References']

如果您使用 sendmail(),我不确定如何访问 headers,因为在那种情况下您没有 Message object。但是,如果您改用 send_message - 这与 sendmail() 非常相似 - 并向其传递 email.message.Message object,则所有电子邮件消息 headers 和它们的值存储在 Message object 的字典中。因此,例如,Message-ID 可以从电子邮件 object msgmsg['Message-ID'] 访问,主题可以使用 msg['Subject'] 等访问。我不认为任何东西都将存储在 message-id 中,除非你自己把它放在那里。您可以 'roll your own' Message-ID 使用 make_msgid() 来自 email.utils:

from email.utils import make_msgid

msg['Message-ID'] = make_msgid()