diff --git a/helpdesk/lib.py b/helpdesk/lib.py index ae8d8944..10f4eb00 100644 --- a/helpdesk/lib.py +++ b/helpdesk/lib.py @@ -25,6 +25,7 @@ except ImportError: from django.conf import settings from django.db.models import Q +from django.utils import six from django.utils.encoding import smart_text from django.utils.safestring import mark_safe @@ -123,13 +124,16 @@ def send_templated_mail(template_name, for filename, filefield in files: mime = mimetypes.guess_type(filename) if mime[0] is not None and mime[0] == "text/plain": - with open(filefield.path, 'r') as file: - content = file.read() + with open(filefield.path, 'r') as attachedfile: + content = attachedfile.read() msg.attach(filename, content) else: - with open(filefield.path, 'rb') as file: - content = file.read() - msg.attach(filename, content) + if six.PY3: + msg.attach_file(filefield.path) + else: + with open(filefield.path, 'rb') as attachedfile: + content = attachedfile.read() + msg.attach(filename, content) return msg.send(fail_silently) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index cd0b9d79..8f0a4661 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -337,6 +337,7 @@ def ticket_from_message(message, queue, logger): if not name: ext = mimetypes.guess_extension(part.get_content_type()) name = "part-%i%s" % (counter, ext) + payload = part.get_payload() payloadToWrite = payload try: @@ -345,8 +346,8 @@ def ticket_from_message(message, queue, logger): except binascii.Error: logger.debug("Payload was not base64 encoded, using raw bytes") payloadToWrite = payload - files.append(SimpleUploadedFile(name, encoding.smart_bytes(payloadToWrite), part.get_content_type())) - logger.info("Found MIME attachment %s" % name) + files.append(SimpleUploadedFile(name, part.get_payload(decode=True), mimetypes.guess_type(name)[0])) + logger.debug("Found MIME attachment %s" % name) counter += 1