mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 03:41:05 -05:00
Feature: Add envelope_sender
New EmailMessage attribute `envelope_sender` controls ESP's sender, sending domain, or return path where supported: * Mailgun: overrides SENDER_DOMAIN on individual message (domain portion only) * Mailjet: becomes `Sender` API param * Mandrill: becomes `return_path_domain` API param (domain portion only) * SparkPost: becomes `return_path` API param * Other ESPs: not believed to be supported Also support undocumented Django SMTP backend behavior, where envelope sender is given by `message.from_email` when `message.extra_headers["From"]` is set. Fixes #91.
This commit is contained in:
@@ -417,13 +417,19 @@ class MailgunBackendAnymailFeatureTests(MailgunBackendMockAPITestCase):
|
||||
})
|
||||
|
||||
def test_sender_domain(self):
|
||||
"""Mailgun send domain can come from from_email or esp_extra"""
|
||||
"""Mailgun send domain can come from from_email, envelope_sender, or esp_extra"""
|
||||
# You could also use MAILGUN_SENDER_DOMAIN in your ANYMAIL settings, as in the next test.
|
||||
# (The mailgun_integration_tests also do that.)
|
||||
self.message.from_email = "Test From <from@from-email.example.com>"
|
||||
self.message.send()
|
||||
self.assert_esp_called('/from-email.example.com/messages') # API url includes the sender-domain
|
||||
|
||||
self.message.from_email = "Test From <from@from-email.example.com>"
|
||||
self.message.envelope_sender = "anything@bounces.example.com" # only the domain part is used
|
||||
self.message.send()
|
||||
self.assert_esp_called('/bounces.example.com/messages') # overrides from_email
|
||||
|
||||
self.message.from_email = "Test From <from@from-email.example.com>"
|
||||
self.message.esp_extra = {'sender_domain': 'esp-extra.example.com'}
|
||||
self.message.send()
|
||||
self.assert_esp_called('/esp-extra.example.com/messages') # overrides from_email
|
||||
|
||||
Reference in New Issue
Block a user