mirror of
https://github.com/coddingtonbear/django-mailbox.git
synced 2026-07-10 06:48:19 +02:00
Properly handle RFC2822 line continuations; resolves #4.
This commit is contained in:
parent
e6f9e6b94b
commit
8a34ac211c
3 changed files with 46 additions and 1 deletions
|
|
@ -393,7 +393,7 @@ class Message(models.Model):
|
||||||
|
|
||||||
return get_body_from_message(
|
return get_body_from_message(
|
||||||
self.get_email_object()
|
self.get_email_object()
|
||||||
)
|
).replace('=\n', '').rstrip('\n')
|
||||||
|
|
||||||
def get_email_object(self):
|
def get_email_object(self):
|
||||||
return email.message_from_string(self.body)
|
return email.message_from_string(self.body)
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,16 @@ import shutil
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
import mimic
|
||||||
|
|
||||||
import django_mailbox
|
import django_mailbox
|
||||||
from django_mailbox.models import Mailbox, Message
|
from django_mailbox.models import Mailbox, Message
|
||||||
|
|
||||||
class EmailMessageTestCase(TestCase):
|
class EmailMessageTestCase(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
super(EmailMessageTestCase, self).setUp()
|
||||||
|
self.mimic = mimic.Mimic()
|
||||||
|
|
||||||
def _get_email_object(self, name):
|
def _get_email_object(self, name):
|
||||||
with open(os.path.join(os.path.dirname(__file__), name), 'r') as f:
|
with open(os.path.join(os.path.dirname(__file__), name), 'r') as f:
|
||||||
return email.message_from_string(
|
return email.message_from_string(
|
||||||
|
|
@ -19,6 +24,8 @@ class EmailMessageTestCase(TestCase):
|
||||||
for message in Message.objects.all():
|
for message in Message.objects.all():
|
||||||
message.delete()
|
message.delete()
|
||||||
|
|
||||||
|
self.mimic.verify_all()
|
||||||
|
|
||||||
class TestProcessEmail(EmailMessageTestCase):
|
class TestProcessEmail(EmailMessageTestCase):
|
||||||
def test_message_without_attachments(self):
|
def test_message_without_attachments(self):
|
||||||
message = self._get_email_object('generic_message.eml')
|
message = self._get_email_object('generic_message.eml')
|
||||||
|
|
@ -123,3 +130,26 @@ class TestFilterMessageBody(EmailMessageTestCase):
|
||||||
message_without_non_plaintext,
|
message_without_non_plaintext,
|
||||||
mailbox._filter_message_body(message).as_string()
|
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
|
||||||
|
)
|
||||||
|
|
|
||||||
15
django_mailbox/tests/message_with_long_text_lines.eml
Normal file
15
django_mailbox/tests/message_with_long_text_lines.eml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
Return-path: <who@somewhere.net>
|
||||||
|
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 <somebody@somewhere.com>
|
||||||
|
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.
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue