diff --git a/pgweb/mailqueue/util.py b/pgweb/mailqueue/util.py index 1c3879cb..026a50f5 100644 --- a/pgweb/mailqueue/util.py +++ b/pgweb/mailqueue/util.py @@ -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: diff --git a/pgweb/util/misc.py b/pgweb/util/misc.py index b9f1bf16..89deb60a 100644 --- a/pgweb/util/misc.py +++ b/pgweb/util/misc.py @@ -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): """