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')