1
0
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:
sindre 2023-10-18 16:03:39 +02:00 committed by Mariusz Felisiak
parent fdd1323b9c
commit 64060d1c17
2 changed files with 15 additions and 1 deletions

View File

@ -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

View File

@ -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"