Как я могу получить заголовки SMTP после отправки электронной почты?

Я могу отправлять электронные письма, используя smtplib с легкостью. То, с чем я борюсь, это чтение фактических заголовков, которые были отправлены. В частности, я хочу прочитать Message-ID а также References,

Сначала я подумал, что sendmail() вернул бы их, но это не так.

Обнаружил, что я могу перенаправить smtpilb.stderr к моей собственной функции и разобрать данные, которые мне нужны. Есть ли лучший способ, который позволил бы мне сказать:

headers['References']

1 ответ

Решение

Если вы используете sendmail() Я не уверен, как получить доступ к заголовкам, потому что у вас нет Message объект в этом случае. Однако, если вы используете send_message вместо этого - что очень похоже на sendmail() - и передать email.message.Message объекта, тогда все заголовки сообщений электронной почты и их значения хранятся в файле dict в вашем Message объект. Так, например, Message-ID может быть доступен из объекта сообщения электронной почты msg с msg['Message-ID']субъект может быть доступен с помощью msg['Subject']и т.д. Я не думаю, что что-то будет храниться в message-id если вы не положите его туда, хотя сами. Вы можете "свернуть свой собственный" Message-ID, используя make_msgid() от email.utils:

from email.utils import make_msgid

msg['Message-ID'] = make_msgid()
Другие вопросы по тегам