From 276917c6e68929c7572ab00cd9e60e0107eb2ce8 Mon Sep 17 00:00:00 2001 From: Adam Coddington Date: Sat, 14 May 2016 22:19:03 -0700 Subject: [PATCH] [#96] Decode attachment filenames into unicodes. --- django_mailbox/models.py | 4 +--- django_mailbox/tests/test_process_email.py | 25 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/django_mailbox/models.py b/django_mailbox/models.py index 3c7e785..fe99ce0 100644 --- a/django_mailbox/models.py +++ b/django_mailbox/models.py @@ -724,9 +724,7 @@ class MessageAttachment(models.Model): """Returns the original filename of this attachment.""" file_name = self._get_rehydrated_headers().get_filename() if isinstance(file_name, six.text_type): - return file_name - elif file_name: - return convert_header_to_unicode(file_name) + return utils.convert_header_to_unicode(file_name) else: return None diff --git a/django_mailbox/tests/test_process_email.py b/django_mailbox/tests/test_process_email.py index e3d4778..8bb70c9 100644 --- a/django_mailbox/tests/test_process_email.py +++ b/django_mailbox/tests/test_process_email.py @@ -40,6 +40,31 @@ class TestProcessEmail(EmailMessageTestCase): 'Adam Coddington ', ) + def test_message_with_encoded_attachment_filenames(self): + message = self._get_email_object( + 'message_with_koi8r_filename_attachments.eml' + ) + + mailbox = Mailbox.objects.create() + msg = mailbox.process_incoming_message(message) + + attachments = msg.attachments.order_by('pk').all() + self.assertEqual( + '\u041f\u0430\u043a\u0435\u0442 \u043f\u0440\u0435\u0434\u043b' + '\u043e\u0436\u0435\u043d\u0438\u0439 HSE Career Fair 8 \u0430' + '\u043f\u0440\u0435\u043b\u044f 2016.pdf', + attachments[0].get_filename() + ) + self.assertEqual( + '\u0412\u0435\u0434\u043e\u043c\u043e\u0441\u0442\u0438.pdf', + attachments[1].get_filename() + ) + self.assertEqual( + '\u041f\u0430\u043a\u0435\u0442 \u043f\u0440\u0435\u0434\u043b' + '\u043e\u0436\u0435\u043d\u0438\u0439 2016.pptx', + attachments[2].get_filename() + ) + def test_message_with_attachments(self): message = self._get_email_object('message_with_attachment.eml')