diff --git a/django_mailbox/models.py b/django_mailbox/models.py index 8c83b04..377d359 100755 --- a/django_mailbox/models.py +++ b/django_mailbox/models.py @@ -393,7 +393,7 @@ class Message(models.Model): return get_body_from_message( self.get_email_object() - ) + ).replace('=\n', '').rstrip('\n') def get_email_object(self): return email.message_from_string(self.body) diff --git a/django_mailbox/tests/__init__.py b/django_mailbox/tests/__init__.py index 44d64ef..f00bdb2 100644 --- a/django_mailbox/tests/__init__.py +++ b/django_mailbox/tests/__init__.py @@ -4,11 +4,16 @@ import shutil from django.db import models from django.test import TestCase +import mimic import django_mailbox from django_mailbox.models import Mailbox, Message class EmailMessageTestCase(TestCase): + def setUp(self): + super(EmailMessageTestCase, self).setUp() + self.mimic = mimic.Mimic() + def _get_email_object(self, name): with open(os.path.join(os.path.dirname(__file__), name), 'r') as f: return email.message_from_string( @@ -19,6 +24,8 @@ class EmailMessageTestCase(TestCase): for message in Message.objects.all(): message.delete() + self.mimic.verify_all() + class TestProcessEmail(EmailMessageTestCase): def test_message_without_attachments(self): message = self._get_email_object('generic_message.eml') @@ -123,3 +130,26 @@ class TestFilterMessageBody(EmailMessageTestCase): message_without_non_plaintext, mailbox._filter_message_body(message).as_string() ) + +class TestGetMessage(EmailMessageTestCase): + def test_get_text_body_properly_recomposes_line_continuations(self): + message = Message() + email_object = self._get_email_object( + 'message_with_long_text_lines.eml' + ) + + self.mimic.stub_out_with_mock(message, 'get_email_object') + message.get_email_object().and_return(email_object) + + self.mimic.replay_all() + + actual_text = message.get_text_body() + expected_text = ( + u'The one of us with a bike pump is far ahead, ' + u'but a man stopped to help us and gave us his pump.' + ) + + self.assertEquals( + actual_text, + expected_text + ) diff --git a/django_mailbox/tests/message_with_long_text_lines.eml b/django_mailbox/tests/message_with_long_text_lines.eml new file mode 100644 index 0000000..db739ad --- /dev/null +++ b/django_mailbox/tests/message_with_long_text_lines.eml @@ -0,0 +1,15 @@ +Return-path: +Delivery-date: Sat, 01 Jun 2013 00:30:16 +0000 +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: quoted-printable +Subject: Flat tire +From: Somebody +Message-Id: <8E4EA9F3-4F4D-45D5-94F8-D3B91B68ABC8@somewhere.net> +Date: Fri, 31 May 2013 16:39:45 -0700 +To: something@somewhere.net +Mime-Version: 1.0 (1.0) +X-Mailer: iPhone Mail (10B329) + +The one of us with a bike pump is far ahead, but a man stopped to help us an= +d gave us his pump. +