mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 03:41:05 -05:00
Add merge_metadata for other ESPs
Support merge_metadata in Mailgun, Mailjet, Mandrill, Postmark, SparkPost, and Test backends. (SendGrid covered in earlier PR.) Also: * Add `merge_metadata` to AnymailMessage, AnymailMessageMixin * Add `is_batch()` logic to BasePayload, for consistent handling * Docs Note: Mailjet implementation switches *all* batch sending from their "Recipients" field to to the "Messages" array bulk sending option. This allows an independent payload for each batch recipient. In addition to supporting merge_metadata, this also removes the prior limitation on mixing Cc/Bcc with merge_data. Closes #141.
This commit is contained in:
@@ -22,6 +22,9 @@ class EmailBackend(AnymailBaseBackend):
|
||||
esp_name = "Test"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
# Allow replacing the payload, for testing.
|
||||
# (Real backends would generally not implement this option.)
|
||||
self._payload_class = kwargs.pop('payload_class', TestPayload)
|
||||
super(EmailBackend, self).__init__(*args, **kwargs)
|
||||
if not hasattr(mail, 'outbox'):
|
||||
mail.outbox = [] # see django.core.mail.backends.locmem
|
||||
@@ -32,7 +35,7 @@ class EmailBackend(AnymailBaseBackend):
|
||||
return mail.outbox.index(message)
|
||||
|
||||
def build_message_payload(self, message, defaults):
|
||||
return TestPayload(backend=self, message=message, defaults=defaults)
|
||||
return self._payload_class(backend=self, message=message, defaults=defaults)
|
||||
|
||||
def post_to_esp(self, payload, message):
|
||||
# Keep track of the sent messages and params (for test cases)
|
||||
@@ -130,6 +133,9 @@ class TestPayload(BasePayload):
|
||||
def set_merge_data(self, merge_data):
|
||||
self.params['merge_data'] = merge_data
|
||||
|
||||
def set_merge_metadata(self, merge_metadata):
|
||||
self.params['merge_metadata'] = merge_metadata
|
||||
|
||||
def set_merge_global_data(self, merge_global_data):
|
||||
self.params['merge_global_data'] = merge_global_data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user