2010-08-12 5 views
2

Я хочу сохранить MessageID отправленного сообщения, поэтому я могу позже использовать его в заголовке «Ссылки», чтобы облегчить потоки.Какой самый простой/самый чистый способ получить MessageID отправленного письма?

Я вижу в корне/django/trunk/django/core/mail.py (строка ~ 55), где создан MessageID.

Я пытаюсь думать о наилучшем способе сбора этого значения, кроме как копировать/вставлять в новый бэкэнд-модуль и возвращать его. Может быть, это лучший способ?

+0

Добро пожаловать в переполнение стека. Поскольку вы решили свою проблему и задокументировали ответ, пожалуйста, примите этот ответ в качестве ответа на ваш вопрос. Таким образом, другие жители знают, что вам больше не нужна помощь в этом вопросе. –

ответ

7

Хорошо, я вижу, что просматривал трагически старый код. Я должен иметь возможность вызвать django.core.mail.message.make_msgid() и заполнить заголовок сам, прежде чем вызывать send.

-1

Не все серверы фактически поддерживают утверждение идентификатора сообщения (например, SES устанавливает его собственный идентификатор сообщения и возвращает его в ответ на отправку). Вы можете на самом деле вытащить возвращаемый/сгенерированный/набор идентификатор сообщения, если вы используете новый EmailMessage класс можно извлечь возвращаемый идентификатор сообщения из экземпляра после вызова Пошлите(), например, (около 1,1?):

e=EmailMessage(
      subject, 
      content, 
      from_email, 
      recipient_list, 
      headers = headers, 
     ) 
e.send() 
message_id = e.extra_headers.get('Message-Id',None) 
+0

Как это работает, когда у получателя есть много идентификаторов электронной почты. Мы должны получить разные message_id для разных получателей. –

+0

У нескольких получателей будет одинаковый идентификатор сообщения, так как вы не создаете несколько сообщений (даже на уровне SMTP), вы создаете одно сообщение, а протокол SMTP обрабатывает репликацию этого сообщения нескольким получателям. Я проверил с SES и подтвердил. – Darb

+2

Я не мог заставить MailMessage работать, в переменной не было message_id. Я переехал в boto, который возвращает message_id правильно, и (message_id, email) является моим уникальным ключом. Но я теряю эффективность использования SMTP с использованием API. –

Смежные вопросы