From d1399310160d6db2aace2097cb2f1ef376dc4f8e Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 5 Nov 2014 14:15:34 +0100 Subject: [PATCH] Use chardet to detect header encoding. --- modoboa/extensions/amavis/views.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modoboa/extensions/amavis/views.py b/modoboa/extensions/amavis/views.py index 0b22a2d0e..4ae830fd7 100644 --- a/modoboa/extensions/amavis/views.py +++ b/modoboa/extensions/amavis/views.py @@ -1,5 +1,6 @@ # coding: utf-8 import email +import chardet from django.shortcuts import render from django.http import HttpResponseRedirect, Http404 from django.template import Template, Context @@ -138,9 +139,13 @@ def viewheaders(request, mail_id): for qm in get_connector().get_mail_content(mail_id): content += qm.mail_text msg = email.message_from_string(content) - headers = [ - (name, value.encode("utf-8")) for name, value in msg.items() - ] + headers = [] + for name, value in msg.items(): + if value and type(value) is unicode: + result = chardet.detect(value) + if chardet["encoding"] is not None: + value = value.decode(result["encoding"]) + headers += [(name, value)] return render(request, 'amavis/viewheader.html', { "headers": headers })