summaryrefslogtreecommitdiff
path: root/odoo/addons/base/ir/ir_mail_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/base/ir/ir_mail_server.py')
-rw-r--r--odoo/addons/base/ir/ir_mail_server.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/odoo/addons/base/ir/ir_mail_server.py b/odoo/addons/base/ir/ir_mail_server.py
index 22f78da6c18..737e9806d68 100644
--- a/odoo/addons/base/ir/ir_mail_server.py
+++ b/odoo/addons/base/ir/ir_mail_server.py
@@ -13,9 +13,11 @@ import re
import smtplib
import threading
+import itertools
+
from odoo import api, fields, models, tools, _
from odoo.exceptions import except_orm, UserError
-from odoo.tools import html2text, ustr
+from odoo.tools import html2text, ustr, pycompat
_logger = logging.getLogger(__name__)
_test_logger = logging.getLogger('odoo.tests')
@@ -110,7 +112,7 @@ def extract_rfc2822_addresses(text):
if not text:
return []
candidates = address_pattern.findall(ustr(text).encode('utf-8'))
- return filter(try_coerce_ascii, candidates)
+ return [c for c in candidates if try_coerce_ascii(c)]
def encode_rfc2822_address_header(header_text):
@@ -127,7 +129,7 @@ def encode_rfc2822_address_header(header_text):
return formataddr((name, email))
addresses = getaddresses([ustr(header_text).encode('utf-8')])
- return COMMASPACE.join(map(encode_addr, addresses))
+ return COMMASPACE.join(encode_addr(a) for a in addresses)
class IrMailServer(models.Model):
@@ -333,7 +335,7 @@ class IrMailServer(models.Model):
msg['Bcc'] = encode_rfc2822_address_header(COMMASPACE.join(email_bcc))
msg['Date'] = formatdate()
# Custom headers may override normal headers or provide additional ones
- for key, value in headers.iteritems():
+ for key, value in pycompat.items(headers):
msg[ustr(key).encode('utf-8')] = encode_header(value)
if subtype == 'html' and not body_alternative and html2text:
@@ -442,7 +444,12 @@ class IrMailServer(models.Model):
email_cc = message['Cc']
email_bcc = message['Bcc']
- smtp_to_list = filter(None, tools.flatten(map(extract_rfc2822_addresses, [email_to, email_cc, email_bcc])))
+ smtp_to_list = [
+ address
+ for base in [email_to, email_cc, email_bcc]
+ for address in extract_rfc2822_addresses(base)
+ if address
+ ]
assert smtp_to_list, self.NO_VALID_RECIPIENT
x_forge_to = message['X-Forge-To']