mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #34904 -- Prevented mutating sent emails from outbox in locmem email backend.
This commit is contained in:
parent
fdd1323b9c
commit
64060d1c17
@ -1,6 +1,7 @@
|
|||||||
"""
|
"""
|
||||||
Backend for test environment.
|
Backend for test environment.
|
||||||
"""
|
"""
|
||||||
|
import copy
|
||||||
|
|
||||||
from django.core import mail
|
from django.core import mail
|
||||||
from django.core.mail.backends.base import BaseEmailBackend
|
from django.core.mail.backends.base import BaseEmailBackend
|
||||||
@ -26,6 +27,6 @@ class EmailBackend(BaseEmailBackend):
|
|||||||
msg_count = 0
|
msg_count = 0
|
||||||
for message in messages: # .message() triggers header validation
|
for message in messages: # .message() triggers header validation
|
||||||
message.message()
|
message.message()
|
||||||
mail.outbox.append(message)
|
mail.outbox.append(copy.deepcopy(message))
|
||||||
msg_count += 1
|
msg_count += 1
|
||||||
return msg_count
|
return msg_count
|
||||||
|
@ -1554,6 +1554,19 @@ class LocmemBackendTests(BaseEmailBackendTests, SimpleTestCase):
|
|||||||
"Subject\nMultiline", "Content", "from@example.com", ["to@example.com"]
|
"Subject\nMultiline", "Content", "from@example.com", ["to@example.com"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_outbox_not_mutated_after_send(self):
|
||||||
|
email = EmailMessage(
|
||||||
|
subject="correct subject",
|
||||||
|
body="test body",
|
||||||
|
from_email="from@example.com",
|
||||||
|
to=["to@example.com"],
|
||||||
|
)
|
||||||
|
email.send()
|
||||||
|
email.subject = "other subject"
|
||||||
|
email.to.append("other@example.com")
|
||||||
|
self.assertEqual(mail.outbox[0].subject, "correct subject")
|
||||||
|
self.assertEqual(mail.outbox[0].to, ["to@example.com"])
|
||||||
|
|
||||||
|
|
||||||
class FileBackendTests(BaseEmailBackendTests, SimpleTestCase):
|
class FileBackendTests(BaseEmailBackendTests, SimpleTestCase):
|
||||||
email_backend = "django.core.mail.backends.filebased.EmailBackend"
|
email_backend = "django.core.mail.backends.filebased.EmailBackend"
|
||||||
|
Loading…
Reference in New Issue
Block a user