From 4eac5104619bfbb68c95cd2e4399ebf3ec558256 Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 15 Jan 2013 13:40:58 +0100 Subject: [PATCH] [FIX] ir.mail_server: properly handle the --smtp-ssl command-line option + map it to STARTTLS as a safer default bzr revid: odo@openerp.com-20130115124058-81kgv0cy9jp96ln4 --- openerp/addons/base/ir/ir_mail_server.py | 9 +++++---- openerp/tools/config.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/openerp/addons/base/ir/ir_mail_server.py b/openerp/addons/base/ir/ir_mail_server.py index d21e53c216d..5a3c40552f0 100644 --- a/openerp/addons/base/ir/ir_mail_server.py +++ b/openerp/addons/base/ir/ir_mail_server.py @@ -370,7 +370,7 @@ class ir_mail_server(osv.osv): return msg def send_email(self, cr, uid, message, mail_server_id=None, smtp_server=None, smtp_port=None, - smtp_user=None, smtp_password=None, smtp_encryption='none', smtp_debug=False, + smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False, context=None): """Sends an email directly (no queuing). @@ -388,7 +388,7 @@ class ir_mail_server(osv.osv): extracted from the combined list of ``To``, ``CC`` and ``BCC`` headers. :param mail_server_id: optional id of ir.mail_server to use for sending. overrides other smtp_* arguments. :param smtp_server: optional hostname of SMTP server to use - :param smtp_encryption: one of 'none', 'starttls' or 'ssl' (see ir.mail_server fields for explanation) + :param smtp_encryption: optional TLS mode, one of 'none', 'starttls' or 'ssl' (see ir.mail_server fields for explanation) :param smtp_port: optional SMTP port, if mail_server_id is not passed :param smtp_user: optional SMTP user, if mail_server_id is not passed :param smtp_password: optional SMTP password to use, if mail_server_id is not passed @@ -436,7 +436,8 @@ class ir_mail_server(osv.osv): smtp_port = tools.config.get('smtp_port', 25) if smtp_port is None else smtp_port smtp_user = smtp_user or tools.config.get('smtp_user') smtp_password = smtp_password or tools.config.get('smtp_password') - + if smtp_encryption is None and tools.config.get('smtp_ssl'): + smtp_encryption = 'starttls' # STARTTLS is the new meaning of the smtp_ssl flag as of v7.0 if not smtp_server: raise osv.except_osv( @@ -455,7 +456,7 @@ class ir_mail_server(osv.osv): return message_id try: - smtp = self.connect(smtp_server, smtp_port, smtp_user, smtp_password, smtp_encryption, smtp_debug) + smtp = self.connect(smtp_server, smtp_port, smtp_user, smtp_password, smtp_encryption or False, smtp_debug) smtp.sendmail(smtp_from, smtp_to_list, message.as_string()) finally: try: diff --git a/openerp/tools/config.py b/openerp/tools/config.py index ad8f5c73b4b..71d1d015d91 100644 --- a/openerp/tools/config.py +++ b/openerp/tools/config.py @@ -205,7 +205,7 @@ class configmanager(object): group.add_option('--smtp-port', dest='smtp_port', my_default=25, help='specify the SMTP port', type="int") group.add_option('--smtp-ssl', dest='smtp_ssl', action='store_true', my_default=False, - help='specify the SMTP server support SSL or not') + help='if passed, SMTP connections will be encrypted with SSL (STARTTLS)') group.add_option('--smtp-user', dest='smtp_user', my_default=False, help='specify the SMTP username for sending email') group.add_option('--smtp-password', dest='smtp_password', my_default=False,