如何在发送电子邮件后获取SMTP标头?

时间:2015-03-18 13:07:43

标签: python python-3.x smtp smtplib

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

我一开始认为sendmail()会返回它们,但事实并非如此。

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

headers['References']

1 个答案:

答案 0 :(得分:1)

如果您使用sendmail()我不确定如何访问标题,因为在这种情况下您没有Message个对象。但是,如果您改为使用send_message - 这与sendmail()非常相似 - 并将其传递给email.message.Message对象,则所有电子邮件标题及其值都存储在dict中你的Message对象。例如,可以使用msg从电子邮件消息对象msg['Message-ID']访问消息ID,可以使用msg['Subject']等访问主题。我不认为会存储任何内容在message-id,除非你自己把它放在那里。你可以自己推动自己的'使用make_msgid()中的email.utils的消息ID:

from email.utils import make_msgid

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