From 989c34e4c3a3808070a579b0873210d3e547724b Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 26 Apr 2017 10:36:33 +0200 Subject: [PATCH] Quote sender local-part. see #1096 --- modoboa/core/models.py | 6 +++--- modoboa/lib/email_utils.py | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modoboa/core/models.py b/modoboa/core/models.py index c6f89ae19..fed83e3f7 100644 --- a/modoboa/core/models.py +++ b/modoboa/core/models.py @@ -1,5 +1,6 @@ """Core models.""" +from email.header import Header import re from django.core.urlresolvers import reverse @@ -223,10 +224,9 @@ class User(PermissionsMixin): @property def encoded_address(self): - from email.header import Header if self.first_name != "" or self.last_name != "": - return "%s <%s>" % \ - (Header(self.fullname, "utf8").encode(), self.email) + return '"{}" <{}>'.format( + Header(self.fullname, "utf8").encode(), self.email) return self.email def is_owner(self, obj): diff --git a/modoboa/lib/email_utils.py b/modoboa/lib/email_utils.py index 4f9a19c39..be8a6a411 100644 --- a/modoboa/lib/email_utils.py +++ b/modoboa/lib/email_utils.py @@ -276,6 +276,8 @@ def prepare_addresses(addresses, usage="header"): """ result = [] for address in re.split('[,;]', addresses): + if not address: + continue name, addr = parseaddr(address) if name and usage == "header": result.append("%s <%s>" % (Header(name, 'utf8').encode(), addr))