]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/utils/mail.py
Migrate to Django 1.6
[osqa.git] / forum / utils / mail.py
index 8016b0034701deb5f5faf3d3d3c9f866adf57a39..b6081ae2339efdb3c1a8cecc101fd19fa7749723 100644 (file)
@@ -24,16 +24,16 @@ from forum.context import application_settings
 from forum.utils.html2text import HTML2Text
 from threading import Thread
 
-def send_template_email(recipients, template, context):
+def send_template_email(recipients, template, context, sender=None, reply_to = None):
     t = loader.get_template(template)
-    context.update(dict(recipients=recipients, settings=settings))
+    context.update(dict(recipients=recipients, settings=settings, sender=sender, reply_to=reply_to))
     t.render(Context(context))
 
 def create_connection():
     connection = SMTP(str(settings.EMAIL_HOST), str(settings.EMAIL_PORT),
                           local_hostname=DNS_NAME.get_fqdn())
 
-    if (bool(settings.EMAIL_USE_TLS)):
+    if bool(settings.EMAIL_USE_TLS):
         connection.ehlo()
         connection.starttls()
         connection.ehlo()
@@ -44,13 +44,24 @@ def create_connection():
     return connection
 
 
-def create_and_send_mail_messages(messages):
+def create_and_send_mail_messages(messages, sender_data=None, reply_to=None):
     if not settings.EMAIL_HOST:
         return
 
     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))
+    
+    if sender_data == None:
+        sender.append('<%s>' % unicode(settings.DEFAULT_FROM_EMAIL))
+        sender = u'%s <%s>' % (unicode(settings.APP_SHORT_NAME), unicode(settings.DEFAULT_FROM_EMAIL))
+    else:
+        sender.append('<%s>' % unicode(sender_data['email']))
+        sender = u'%s <%s>' % (unicode(sender_data['name']), unicode(sender_data['email']))
+        
+    
+    if reply_to == None:
+        reply_to = unicode(settings.DEFAULT_REPLY_TO_EMAIL)
+    else:
+        reply_to = unicode(reply_to)
 
     try:
         connection = None
@@ -67,10 +78,12 @@ def create_and_send_mail_messages(messages):
             msgRoot['Subject'] = Header(subject, 'utf-8')
             msgRoot['From'] = sender
 
-            to = Header(recipient.username, 'utf-8')
-            to.append('<%s>' % recipient.email)
+            to = Header(u"%s <%s>" % (recipient.username, recipient.email), 'utf-8')
             msgRoot['To'] = to
 
+            if reply_to:
+                msgRoot['Reply-To'] = reply_to
+
             msgRoot.preamble = 'This is a multi-part message from %s.' % unicode(settings.APP_SHORT_NAME).encode('utf8')
 
             msgAlternative = MIMEMultipart('alternative')
@@ -94,12 +107,15 @@ def create_and_send_mail_messages(messages):
                 logging.error("Couldn't send mail using the sendmail method: %s" % e)
                 try:
                     connection.quit()
-                    connection = None
-                except Exception:
+                except Exception, e:
+                    logging.error(e)
+                finally:
                     connection = None
 
         try:
             connection.quit()
+        except AttributeError:
+            pass
         except socket.sslerror:
             connection.close()
     except Exception, e: