Add support for setting recipient name and sender name
authorMagnus Hagander <magnus@hagander.net>
Mon, 18 Dec 2017 15:21:01 +0000 (16:21 +0100)
committerMagnus Hagander <magnus@hagander.net>
Mon, 18 Dec 2017 15:21:01 +0000 (16:21 +0100)
pgweb/mailqueue/util.py
pgweb/util/misc.py

index 1c3879cb02547d8e07bea30242699b7f7b56fbac..026a50f5b77d29193df5700e9c101d0502d32466 100644 (file)
@@ -1,21 +1,27 @@
 from email.mime.text import MIMEText
 from email.mime.multipart import MIMEMultipart
 from email.mime.nonmultipart import MIMENonMultipart
-from email.Utils import formatdate
+from email.Utils import formatdate, formataddr
 from email.Utils import make_msgid
 from email import encoders
+from email.header import Header
 
 from models import QueuedMail
 
-def send_simple_mail(sender, receiver, subject, msgtxt, attachments=None, usergenerated=False, cc=None, replyto=None):
+def _encoded_email_header(name, email):
+       if name:
+               return formataddr((str(Header(name, 'utf-8')), email))
+       return email
+
+def send_simple_mail(sender, receiver, subject, msgtxt, attachments=None, usergenerated=False, cc=None, replyto=None, sendername=None, receivername=None):
        # attachment format, each is a tuple of (name, mimetype,contents)
        # content should be *binary* and not base64 encoded, since we need to
        # use the base64 routines from the email library to get a properly
        # formatted output message
        msg = MIMEMultipart()
        msg['Subject'] = subject
-       msg['To'] = receiver
-       msg['From'] = sender
+       msg['To'] = _encoded_email_header(receivername, receiver)
+       msg['From'] = _encoded_email_header(sendername, sender)
        if cc:
                msg['Cc'] = cc
        if replyto:
index b9f1bf166062f2b64a1f34e1708cd38d9bccd688..89deb60a6922875284bf9a0aa06fe511eff0d477 100644 (file)
@@ -8,10 +8,11 @@ from pgweb.mailqueue.util import send_simple_mail
 from pgweb.util.helpers import template_to_string
 import re
 
-def send_template_mail(sender, receiver, subject, templatename, templateattr={}, usergenerated=False, cc=None, replyto=None):
+def send_template_mail(sender, receiver, subject, templatename, templateattr={}, usergenerated=False, cc=None, replyto=None, receivername=None, sendername=None):
        send_simple_mail(sender, receiver, subject,
                                         template_to_string(templatename, templateattr),
-                                        usergenerated=usergenerated, cc=cc, replyto=replyto)
+                                        usergenerated=usergenerated, cc=cc, replyto=replyto,
+                                        receivername=receivername, sendername=sendername)
 
 def get_client_ip(request):
        """