Как получить ответ Mandrill для каждого сообщения при отправке html массовых писем с помощью djrill?
Я собираюсь интегрировать в проект некоторые функции массовых рассылок, используя mandrill и djrill 1.3.0 с django 1.7, так как я отправляю html-контент, я использую следующий подход:
from django.core.mail import get_connection
connection = get_connection()
to = ['testaddress1@example.com', 'testaddress1@example.com']
for recipient_email in to:
# I perform some controls and register some info about the user and email address
subject = u"Test subject for %s" % recipient_email
text = u"Test text for email body"
html = u"<p>Test text for email body</p>"
from_email = settings.DEFAULT_FROM_EMAIL
msg = EmailMultiAlternatives(
subject, text, from_email, [recipient_email])
msg.attach_alternative(html, 'text/html')
messages.append(msg)
# Bulk send
send_result = connection.send_messages(messages)
С этой точки зрения, send_result
является целым числом, равным количеству отправленных (отправленных на мандрил) сообщений.
Мне нужно получить ответ mandrill для каждого отправленного сообщения, чтобы обработать значение mandrill_response['msg']['_id'] и некоторые другие вещи.
djrill при условии, что метод соединения send_messages использует вызов _send, и он добавляет mandrill_response к каждому сообщению, но просто возвращает True в случае успеха.
Итак, знаете ли вы, как получить ответ mandrill для каждого сообщения при отправке больших html-писем с помощью djrill?
1 ответ
Джрилл придает mandrill_response
атрибут для каждого объекта EmailMessage по мере его отправки. См. Ответ Mandrill в документации Djrill.
Поэтому после отправки сообщений вы можете проверить это свойство для каждого объекта в messages
список вы отправили. Что-то вроде:
# Bulk send
send_result = connection.send_messages(messages)
for msg in messages:
if msg.mandrill_response is None:
print "error sending to %r" % msg.to
else:
# there's one response for each recipient of the msg
# (because an individual message can have multiple to=[..., ...])
for response in msg.mandrill_response:
print "Message _id %s, to %s, status %s" % (
response['_id'], response['email'], response['status'])
>>> Message _id abc123abc123abc123abc123abc123, to testaddress1@example.com, status sent
>>> ...