From dd39512b7ca617c9cd3c2e29c8e3ec068631b9e8 Mon Sep 17 00:00:00 2001 From: shabbyrobe Date: Fri, 27 May 2016 15:17:01 +1000 Subject: Issue #695: Show all recipients in mail sent folder --- service/pixelated/adapter/services/mail_sender.py | 4 ++++ service/test/unit/adapter/services/test_mail_sender.py | 14 ++++++++++++++ 2 files changed, 18 insertions(+) (limited to 'service') diff --git a/service/pixelated/adapter/services/mail_sender.py b/service/pixelated/adapter/services/mail_sender.py index 5ce3f7f1..b7b5bfe6 100644 --- a/service/pixelated/adapter/services/mail_sender.py +++ b/service/pixelated/adapter/services/mail_sender.py @@ -15,6 +15,7 @@ # along with Pixelated. If not, see . from StringIO import StringIO from email.utils import parseaddr +from copy import deepcopy from leap.mail.outgoing.service import OutgoingMail from twisted.internet.defer import Deferred, fail @@ -47,6 +48,9 @@ class MailSender(object): @defer.inlineCallbacks def sendmail(self, mail): + # message is changed in sending, but should be saved unaltered + mail = deepcopy(mail) + recipients = flatten([mail.to, mail.cc, mail.bcc]) results = yield self._send_mail_to_all_recipients(mail, recipients) diff --git a/service/test/unit/adapter/services/test_mail_sender.py b/service/test/unit/adapter/services/test_mail_sender.py index 0f02f759..863ac81a 100644 --- a/service/test/unit/adapter/services/test_mail_sender.py +++ b/service/test/unit/adapter/services/test_mail_sender.py @@ -76,6 +76,20 @@ class MailSenderTest(unittest.TestCase): for recipient in flatten([input_mail.to, input_mail.cc, input_mail.bcc]): verify(OutgoingMail).send_message(any(), TwistedSmtpUserCapture(recipient)) + @defer.inlineCallbacks + def test_send_leaves_mail_in_tact(self): + input_mail_dict = mail_dict() + input_mail = InputMail.from_dict(input_mail_dict, from_address='pixelated@org') + + when(OutgoingMail).send_message(any(), any()).thenReturn(defer.succeed(None)) + + yield self.sender.sendmail(input_mail) + + self.assertEqual(input_mail.to, input_mail_dict["header"]["to"]) + self.assertEqual(input_mail.cc, input_mail_dict["header"]["cc"]) + self.assertEqual(input_mail.bcc, input_mail_dict["header"]["bcc"]) + self.assertEqual(input_mail.subject, input_mail_dict["header"]["subject"]) + @defer.inlineCallbacks def test_problem_with_email_raises_exception(self): input_mail = InputMail.from_dict(mail_dict(), from_address='pixelated@org') -- cgit v1.2.3