From 0596263c3136bc26cffa670e5322bd0aa56c4d34 Mon Sep 17 00:00:00 2001 From: nessita <124304+nessita@users.noreply.github.com> Date: Thu, 24 Apr 2025 10:11:16 -0300 Subject: Fixed #36309 -- Made email alternatives and attachments pickleable. Regression in aba0e541caaa086f183197eaaca0ac20a730bbe4 and in d5bebc1c26d4c0ec9eaa057aefc5b38649c0ba3b. Thanks Florent Messa for the report, and Jake Howard and Claude Paroz for the review. --- tests/mail/tests.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests') diff --git a/tests/mail/tests.py b/tests/mail/tests.py index 3fb1a47bc7..301e589409 100644 --- a/tests/mail/tests.py +++ b/tests/mail/tests.py @@ -1,5 +1,6 @@ import mimetypes import os +import pickle import shutil import socket import sys @@ -654,6 +655,23 @@ class MailTests(MailTestsMixin, SimpleTestCase): self.assertIn(html_content, msg.message().as_string()) + def test_alternatives_and_attachment_serializable(self): + html_content = "

This is html

" + mime_type = "text/html" + + msg = EmailMultiAlternatives(alternatives=[(html_content, mime_type)]) + msg.attach("test.txt", "This is plain text.", "plain/text") + + # Alternatives and attachments can be serialized. + restored = pickle.loads(pickle.dumps(msg)) + + self.assertEqual(restored.subject, msg.subject) + self.assertEqual(restored.body, msg.body) + self.assertEqual(restored.from_email, msg.from_email) + self.assertEqual(restored.to, msg.to) + self.assertEqual(restored.alternatives, msg.alternatives) + self.assertEqual(restored.attachments, msg.attachments) + def test_none_body(self): msg = EmailMessage("subject", None, "from@example.com", ["to@example.com"]) self.assertEqual(msg.body, "") -- cgit v1.3