* Fixes issue #34, where e-mail headers in non-ascii encoding

were displayed incorrectly. Thanks to kron82 for reporting this.
This commit is contained in:
Ross Poulton 2008-12-10 21:46:54 +00:00
parent 9e1179606e
commit a20ab36452

View File

@ -16,6 +16,7 @@ import mimetypes
import poplib
import re
from datetime import datetime, timedelta
from email.header import decode_header
from email.Utils import parseaddr
from django.core.files.base import ContentFile
@ -115,17 +116,20 @@ def decodeUnknown(charset, string):
string = unicode(string)
return string
def decode_mail_headers(string):
decoded = decode_header(string)
return u' '.join([unicode(msg, charset or 'utf-8') for msg, charset in decoded])
def ticket_from_message(message, queue):
# 'message' must be an RFC822 formatted message.
msg = message
message = email.message_from_string(msg)
subject = message.get('subject', _('Created from e-mail'))
subject = decodeUnknown(message.get_charset(), subject)
subject = decode_mail_headers(decodeUnknown(message.get_charset(), subject))
subject = subject.replace("Re: ", "").replace("Fw: ", "").replace("RE: ", "").replace("FW: ", "").strip()
sender = message.get('from', _('Unknown Sender'))
sender = decodeUnknown(message.get_charset(), sender)
sender = decode_mail_headers(decodeUnknown(message.get_charset(), sender))
sender_email = parseaddr(sender)[1]