From cfdaf8c50ad2da8fbec92ae01c3810a782d12dd7 Mon Sep 17 00:00:00 2001 From: "Yogesh (Serpent Consulting Services)" Date: Fri, 16 Mar 2012 17:49:15 +0530 Subject: [PATCH 1/2] [FIX] action :- send multiple email on server action. lp bug: https://launchpad.net/bugs/956898 fixed bzr revid: yogesh.sakhreliya@serpentcs.com-20120316121915-t5kjscd0bnwm72xi --- openerp/addons/base/ir/ir_actions.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index 236c6af7119..77eeb8d58f3 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -670,6 +670,9 @@ class actions_server(osv.osv): _logger.info('No partner email address specified, not sending any email.') continue + if not isinstance(address, tuple) and not isinstance(address, list): + address = [address] + if not email_from: _logger.debug('--email-from command line option is not specified, using a fallback value instead.') if user.user_email: @@ -681,7 +684,7 @@ class actions_server(osv.osv): body = self.merge_message(cr, uid, action.message, action, context) ir_mail_server = self.pool.get('ir.mail_server') - msg = ir_mail_server.build_email(email_from, [address], subject, body) + msg = ir_mail_server.build_email(email_from, address, subject, body) res_email = ir_mail_server.send_email(cr, uid, msg) if res_email: _logger.info('Email successfully sent to: %s', address) From 940fc2fa858a938eab9c16a6a10ec2477db3da70 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 21 Dec 2012 17:33:59 +0100 Subject: [PATCH 2/2] [IMP] ir.actions.server: improve code of email actions bzr revid: rco@openerp.com-20121221163359-bfv218b315r3z9wr --- openerp/addons/base/ir/ir_actions.py | 30 +++++++++++++--------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index 77eeb8d58f3..908dd86fa19 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -660,19 +660,6 @@ class actions_server(osv.osv): if action.state == 'email': email_from = config['email_from'] - address = str(action.email) - try: - address = eval(str(action.email), cxt) - except: - pass - - if not address: - _logger.info('No partner email address specified, not sending any email.') - continue - - if not isinstance(address, tuple) and not isinstance(address, list): - address = [address] - if not email_from: _logger.debug('--email-from command line option is not specified, using a fallback value instead.') if user.user_email: @@ -680,16 +667,27 @@ class actions_server(osv.osv): else: email_from = "%s@%s" % (user.login, gethostname()) + try: + address = eval(str(action.email), cxt) + except: + address = str(action.email) + + if not address: + _logger.info('No partner email address specified, not sending any email.') + continue + + # handle single and multiple recipient addresses + addresses = address if isinstance(address, (tuple, list)) else [address] subject = self.merge_message(cr, uid, action.subject, action, context) body = self.merge_message(cr, uid, action.message, action, context) ir_mail_server = self.pool.get('ir.mail_server') - msg = ir_mail_server.build_email(email_from, address, subject, body) + msg = ir_mail_server.build_email(email_from, addresses, subject, body) res_email = ir_mail_server.send_email(cr, uid, msg) if res_email: - _logger.info('Email successfully sent to: %s', address) + _logger.info('Email successfully sent to: %s', addresses) else: - _logger.warning('Failed to send email to: %s', address) + _logger.warning('Failed to send email to: %s', addresses) if action.state == 'trigger': wf_service = netsvc.LocalService("workflow")