diff --git a/odoo/addons/base/ir/ir_mail_server.py b/odoo/addons/base/ir/ir_mail_server.py index 737e9806d68ad2d6b877c84a6f69a2a52652d900..35588019ebc8591f4d98691e613e3faadf81b5c9 100644 --- a/odoo/addons/base/ir/ir_mail_server.py +++ b/odoo/addons/base/ir/ir_mail_server.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from email import Encoders +from email import encoders from email.charset import Charset from email.header import Header from email.mime.base import MIMEBase @@ -28,16 +28,16 @@ class MailDeliveryException(except_orm): def __init__(self, name, value): super(MailDeliveryException, self).__init__(name, value) +# Python 3: patch SMTP's internal printer/debugger +def _print_debug(self, *args): + _logger.debug(' '.join(str(a) for a in args)) +smtplib.SMTP._print_debug = _print_debug +# Python 2: replace smtplib's stderr class WriteToLogger(object): - """debugging helper: behave as a fd and pipe to logger at the given level""" - def __init__(self, logger, level=logging.DEBUG): - self.logger = logger - self.level = level - def write(self, s): - self.logger.log(self.level, s) - + _logger.debug(s) +smtplib.stderr = WriteToLogger() def try_coerce_ascii(string_utf8): """Attempts to decode the given utf8-encoded string @@ -159,14 +159,6 @@ class IrMailServer(models.Model): "is used. Default priority is 10 (smaller number = higher priority)") active = fields.Boolean(default=True) - def __init__(self, *args, **kwargs): - # Make sure we pipe the smtplib outputs to our own DEBUG logger - if not isinstance(smtplib.stderr, WriteToLogger): - logpiper = WriteToLogger(_logger) - smtplib.stderr = logpiper - smtplib.stdout = logpiper - super(IrMailServer, self).__init__(*args, **kwargs) - @api.multi def name_get(self): return [(server.id, "(%s)" % server.name) for server in self] @@ -371,7 +363,7 @@ class IrMailServer(models.Model): part.add_header('Content-Disposition', 'attachment', filename=filename_rfc2047) part.set_payload(fcontent) - Encoders.encode_base64(part) + encoders.encode_base64(part) msg.attach(part) return msg