mirror of
https://github.com/coddingtonbear/django-mailbox.git
synced 2026-07-09 22:38:19 +02:00
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()
|
||||
|
||||
message_received.send(sender=self, message=msg)
|
||||
|
||||
|
||||
return msg
|
||||
|
||||
def record_outgoing_message(self, message):
|
||||
|
|
@ -736,7 +736,10 @@ class MessageAttachment(models.Model):
|
|||
if headers is None:
|
||||
return EmailMessage()
|
||||
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)
|
||||
|
||||
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',
|
||||
)
|
||||
|
||||
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):
|
||||
message = self._get_email_object('multipart_text.eml')
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue