summaryrefslogtreecommitdiff
path: root/odoo/addons/base/models/ir_mail_server.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-05-17 15:50:59 +0200
committerChristophe Simonis <chs@odoo.com>2019-05-17 15:50:59 +0200
commitd785adba6c09b0773bdd874182f450ba2ebe7c6d (patch)
tree5189f5dc30c84515eda62c4d6a512f552ae8f900 /odoo/addons/base/models/ir_mail_server.py
parent8968a620105e2e79f2aa9d8db36b5408b89e92ee (diff)
parentc545783b95b15f65a9798003b614f75685dc434e (diff)
[MERGE] forward port branch 12.0 up to c545783b95b
Diffstat (limited to 'odoo/addons/base/models/ir_mail_server.py')
-rw-r--r--odoo/addons/base/models/ir_mail_server.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/odoo/addons/base/models/ir_mail_server.py b/odoo/addons/base/models/ir_mail_server.py
index 6773e1f61cc..2422b9cf4a9 100644
--- a/odoo/addons/base/models/ir_mail_server.py
+++ b/odoo/addons/base/models/ir_mail_server.py
@@ -119,10 +119,18 @@ def encode_rfc2822_address_header(header_text):
# Header as a string, using an unlimited line length.", the old one
# was "A synonym for Header.encode()." so call encode() directly?
name = Header(pycompat.to_text(name)).encode()
- return formataddr((name, email))
+ # if the from does not follow the (name <addr>),* convention, we might
+ # try to encode meaningless strings as address, as getaddresses is naive
+ # note it would also fail on real addresses with non-ascii characters
+ try:
+ return formataddr((name, email))
+ except UnicodeEncodeError:
+ _logger.warning(_('Failed to encode the address %s\n'
+ 'from mail header:\n%s') % addr, header_text)
+ return ""
addresses = getaddresses([pycompat.to_text(ustr(header_text))])
- return COMMASPACE.join(encode_addr(a) for a in addresses)
+ return COMMASPACE.join(a for a in (encode_addr(addr) for addr in addresses) if a)
class IrMailServer(models.Model):