From 98745bcd70d4d92e1f6e9b8cfcae53afdd8296fe Mon Sep 17 00:00:00 2001 From: Adam Coddington Date: Fri, 26 Jul 2013 17:40:44 -0700 Subject: [PATCH] Set email payload's charset after all other headers. --- django_mailbox/models.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/django_mailbox/models.py b/django_mailbox/models.py index 1bce91a..0c40e53 100644 --- a/django_mailbox/models.py +++ b/django_mailbox/models.py @@ -488,13 +488,20 @@ class Message(models.Model): new.set_payload('') else: payload = msg.get_payload().decode('utf-8') + charset = None for header, value in msg.items(): if header == ORIGINAL_CHARSET_HEADER: payload.encode(value) - new.set_charset(value) - # We do not want to preserve this header + charset = value + # We do not want to preserve this header. continue new[header] = value + if charset: + # If we process ORIGINAL_CHARSET_HEADER before other headers + # (in the above), due to some idiosyncrasies of python's email + # module, we'll end up with duplicated headers -- set_charset + # sets a handful of headers if they do not already exist. + new.set_charset(charset) new.set_payload(payload) return new