X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/5960a749b88d64b2d0587e090d3f47be554d4f9d..8b52676543e3f5f1350d8d0eeaedee6fe35f49b3:/forum/utils/mail.py diff --git a/forum/utils/mail.py b/forum/utils/mail.py index 6536a44..0d281c2 100644 --- a/forum/utils/mail.py +++ b/forum/utils/mail.py @@ -2,13 +2,19 @@ import email import socket import os -from email.mime.multipart import MIMEMultipart -from email.mime.text import MIMEText -from email.mime.image import MIMEImage +try: + from email.mime.multipart import MIMEMultipart + from email.mime.text import MIMEText + from email.mime.image import MIMEImage + from email.header import Header +except: + from email.MIMEMultipart import MIMEMultipart + from email.MIMEText import MIMEText + from email.MIMEImage import MIMEImage + from email.Header import Header from django.core.mail import DNS_NAME from smtplib import SMTP -import email.Charset from forum import settings from django.template import loader, Context, Template from forum.utils.html import sanitize_html @@ -19,7 +25,7 @@ from threading import Thread def send_msg_list(msgs, sender=None): if len(msgs): connection = SMTP(str(settings.EMAIL_HOST), str(settings.EMAIL_PORT), - local_hostname=DNS_NAME.get_fqdn()) + local_hostname=DNS_NAME.get_fqdn()) try: if (bool(settings.EMAIL_USE_TLS)): @@ -126,7 +132,7 @@ def send_email(subject, recipients, template, context={}, sender=None, images=[] msgs.append((email, msg)) if threaded: - thread = Thread(target=send_msg_list, args=[msgs]) + thread = Thread(target=send_msg_list, args=[msgs]) thread.setDaemon(True) thread.start() else: @@ -139,12 +145,17 @@ def send_template_email(recipients, template, context): t.render(Context(context)) def create_and_send_mail_messages(messages): - sender = '%s <%s>' % (unicode(settings.APP_SHORT_NAME), unicode(settings.DEFAULT_FROM_EMAIL)) + if not settings.EMAIL_HOST: + return - connection = SMTP(str(settings.EMAIL_HOST), str(settings.EMAIL_PORT), - local_hostname=DNS_NAME.get_fqdn()) + sender = Header(unicode(settings.APP_SHORT_NAME), 'utf-8') + sender.append('<%s>' % unicode(settings.DEFAULT_FROM_EMAIL)) + sender = u'%s <%s>' % (unicode(settings.APP_SHORT_NAME), unicode(settings.DEFAULT_FROM_EMAIL)) try: + connection = SMTP(str(settings.EMAIL_HOST), str(settings.EMAIL_PORT), + local_hostname=DNS_NAME.get_fqdn()) + if (bool(settings.EMAIL_USE_TLS)): connection.ehlo() connection.starttls() @@ -158,10 +169,14 @@ def create_and_send_mail_messages(messages): for recipient, subject, html, text, media in messages: msgRoot = MIMEMultipart('related') - #msgRoot.set_charset('utf-8') - msgRoot['Subject'] = subject + + msgRoot['Subject'] = Header(subject, 'utf-8') msgRoot['From'] = sender - msgRoot['To'] = '%s <%s>' % (recipient.username, recipient.email) + + to = Header(recipient.username, 'utf-8') + to.append('<%s>' % recipient.email) + msgRoot['To'] = to + msgRoot.preamble = 'This is a multi-part message from %s.' % unicode(settings.APP_SHORT_NAME).encode('utf8') msgAlternative = MIMEMultipart('alternative') @@ -186,5 +201,5 @@ def create_and_send_mail_messages(messages): connection.quit() except socket.sslerror: connection.close() - except: + except Exception, e: pass