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
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)):
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:
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()
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')
msgRoot.attach(msgAlternative)
- msgAlternative.attach(MIMEText(text))
- msgAlternative.attach(MIMEText(html, 'html'))
+ msgAlternative.attach(MIMEText(text.encode('utf-8'), _charset='utf-8'))
+ msgAlternative.attach(MIMEText(html.encode('utf-8'), 'html', _charset='utf-8'))
for alias, location in media.items():
fp = open(location, 'rb')
connection.quit()
except socket.sslerror:
connection.close()
- except:
+ except Exception, e:
pass