mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2025-05-30 22:45:48 +02:00
* 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:
parent
9e1179606e
commit
a20ab36452
@ -16,6 +16,7 @@ import mimetypes
|
|||||||
import poplib
|
import poplib
|
||||||
import re
|
import re
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
from email.header import decode_header
|
||||||
from email.Utils import parseaddr
|
from email.Utils import parseaddr
|
||||||
|
|
||||||
from django.core.files.base import ContentFile
|
from django.core.files.base import ContentFile
|
||||||
@ -58,7 +59,7 @@ def process_email():
|
|||||||
def process_queue(q):
|
def process_queue(q):
|
||||||
print "Processing: %s" % q
|
print "Processing: %s" % q
|
||||||
if q.email_box_type == 'pop3':
|
if q.email_box_type == 'pop3':
|
||||||
|
|
||||||
if q.email_box_ssl:
|
if q.email_box_ssl:
|
||||||
if not q.email_box_port: q.email_box_port = 995
|
if not q.email_box_port: q.email_box_port = 995
|
||||||
server = poplib.POP3_SSL(q.email_box_host, int(q.email_box_port))
|
server = poplib.POP3_SSL(q.email_box_host, int(q.email_box_port))
|
||||||
@ -78,7 +79,7 @@ def process_queue(q):
|
|||||||
|
|
||||||
full_message = "\n".join(server.retr(msgNum)[1])
|
full_message = "\n".join(server.retr(msgNum)[1])
|
||||||
ticket = ticket_from_message(message=full_message, queue=q)
|
ticket = ticket_from_message(message=full_message, queue=q)
|
||||||
|
|
||||||
if ticket:
|
if ticket:
|
||||||
server.dele(msgNum)
|
server.dele(msgNum)
|
||||||
|
|
||||||
@ -114,18 +115,21 @@ def decodeUnknown(charset, string):
|
|||||||
string = string.decode('iso8859-1')
|
string = string.decode('iso8859-1')
|
||||||
string = unicode(string)
|
string = unicode(string)
|
||||||
return 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):
|
def ticket_from_message(message, queue):
|
||||||
# 'message' must be an RFC822 formatted message.
|
# 'message' must be an RFC822 formatted message.
|
||||||
msg = message
|
msg = message
|
||||||
message = email.message_from_string(msg)
|
message = email.message_from_string(msg)
|
||||||
subject = message.get('subject', _('Created from e-mail'))
|
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()
|
subject = subject.replace("Re: ", "").replace("Fw: ", "").replace("RE: ", "").replace("FW: ", "").strip()
|
||||||
|
|
||||||
sender = message.get('from', _('Unknown Sender'))
|
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]
|
sender_email = parseaddr(sender)[1]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user