forked from mirror/django-mailbox
Merge pull request #64 from antcorro/master
Possible Fix UnicodeDecodeError in MessageAttachment headers
This commit is contained in:
commit
33c5a0cba2
3 changed files with 56 additions and 2 deletions
|
|
@ -261,7 +261,7 @@ class Mailbox(models.Model):
|
||||||
msg.save()
|
msg.save()
|
||||||
|
|
||||||
message_received.send(sender=self, message=msg)
|
message_received.send(sender=self, message=msg)
|
||||||
|
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
def record_outgoing_message(self, message):
|
def record_outgoing_message(self, message):
|
||||||
|
|
@ -736,7 +736,10 @@ class MessageAttachment(models.Model):
|
||||||
if headers is None:
|
if headers is None:
|
||||||
return EmailMessage()
|
return EmailMessage()
|
||||||
if sys.version_info < (3, 0):
|
if sys.version_info < (3, 0):
|
||||||
headers = headers.encode('utf-8')
|
try:
|
||||||
|
headers = headers.encode('utf-8')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
headers = unicode(headers, 'utf-8').encode('utf-8')
|
||||||
return email.message_from_string(headers)
|
return email.message_from_string(headers)
|
||||||
|
|
||||||
def _set_dehydrated_headers(self, email_object):
|
def _set_dehydrated_headers(self, email_object):
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Received: by 10.221.0.211 with HTTP; Sun, 20 Jan 2013 12:07:07 -0800 (PST)
|
||||||
|
X-Originating-IP: [24.22.122.177]
|
||||||
|
Date: Sun, 20 Jan 2013 12:07:07 -0800
|
||||||
|
Delivered-To: test@adamcoddington.net
|
||||||
|
Message-ID: <CAMdmm+jYCgrxrekAxszmDnBjAytcBym-Ec+uM-+HEtzuKy=M_g@mail.gmail.com>
|
||||||
|
Subject: Message With Attachment
|
||||||
|
From: Adam Coddington <test@adamcoddington.net>
|
||||||
|
To: Adam Coddington <test@adamcoddington.net>
|
||||||
|
Content-Type: multipart/mixed; boundary=047d7b33dd729737fe04d3bde348
|
||||||
|
|
||||||
|
--047d7b33dd729737fe04d3bde348
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
|
||||||
|
This message has an attachment.
|
||||||
|
|
||||||
|
--047d7b33dd729737fe04d3bde348
|
||||||
|
Content-Type: image/png; name="ð̞oβ̞le.png"
|
||||||
|
Content-Disposition: attachment; filename="ð̞oβ̞le.png"
|
||||||
|
X-Attachment-Id: f_hc6mair60
|
||||||
|
Content-Transfer-Encoding: base64
|
||||||
|
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAFoTx1HAAAAzUlEQVQoz32RWxXDIBBEr4NIQEIl
|
||||||
|
ICESkFAJkRAJSIgEpEQCEqYfu6QUkn7sCcyDGQiSACKSKCAkGwBJwhDwZQNMEiYAIBdQvk7rfaHf
|
||||||
|
AO8NBJwCxTGhtFgTHVNaNaJeWFu44AXEHzKCktc7zZ0vss+bMoHSiM2b9mQoX1eZCgGqnWskY3gi
|
||||||
|
XXAAxb8BqFiUgBNY7k49Tu/kV7UKPsefrjEOT9GmghYzrk9V03pjDGYKj3d0c06dKZkpTboRaD9o
|
||||||
|
B+1m2m81d2Az948xzgdjLaFe95e83AAAAABJRU5ErkJggg==
|
||||||
|
|
||||||
|
--047d7b33dd729737fe04d3bde348--
|
||||||
|
|
@ -60,6 +60,28 @@ class TestProcessEmail(EmailMessageTestCase):
|
||||||
'heart.png',
|
'heart.png',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_message_with_not_decoded_attachment_header(self):
|
||||||
|
email_object = self._get_email_object(
|
||||||
|
'message_with_not_decoded_attachment_header.eml',
|
||||||
|
)
|
||||||
|
|
||||||
|
mailbox = Mailbox.objects.create()
|
||||||
|
msg = mailbox.process_incoming_message(email_object)
|
||||||
|
|
||||||
|
expected_count = 1
|
||||||
|
actual_count = msg.attachments.count()
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
expected_count,
|
||||||
|
actual_count,
|
||||||
|
)
|
||||||
|
|
||||||
|
attachment = msg.attachments.all()[0]
|
||||||
|
self.assertEqual(
|
||||||
|
attachment.get_filename(),
|
||||||
|
u'\xc3\xb0\xcc\x9eo\xce\xb2\xcc\x9ele.png',
|
||||||
|
)
|
||||||
|
|
||||||
def test_message_get_text_body(self):
|
def test_message_get_text_body(self):
|
||||||
message = self._get_email_object('multipart_text.eml')
|
message = self._get_email_object('multipart_text.eml')
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue