From 492bd0eea566172bdad5764041168f5594e97ad7 Mon Sep 17 00:00:00 2001 From: "YSA (Openerp)" Date: Thu, 3 Feb 2011 12:29:13 +0530 Subject: [PATCH] [IMP] improve email_send method and pass the smtp related all argument in email module. add column in email.message object and related improvement. bzr revid: ysa@tinyerp.com-20110203065913-q33pek0p4puxvbyy --- addons/email/email_message.py | 24 ++++++++++++++++++------ addons/email/email_message_view.xml | 1 + addons/email/email_smtp_server.py | 3 ++- addons/email_template/email_template.py | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/addons/email/email_message.py b/addons/email/email_message.py index eaa41fc..3d74f3f 100644 --- a/addons/email/email_message.py +++ b/addons/email/email_message.py @@ -151,6 +151,7 @@ class email_message(osv.osv): 'sub_type': fields.char('Sub Type', size=32, readonly=True), 'x_headers': fields.char('x_headers',size=256, readonly=True), 'priority':fields.integer('Priority', readonly=True), + 'debug':fields.boolean('Debug', readonly=True), #I like GMAIL which allows putting same mail in many folders #Lets plan it for 0.9 'folder':fields.selection([ @@ -215,19 +216,30 @@ class email_message(osv.osv): context = {} attachment_obj = self.pool.get('ir.attachment') account_obj = self.pool.get('email.smtp_server') - filters = [('folder', '=', 'outbox'), ('state', '!=', 'sending')] - if 'filters' in context: - filters.extend(context['filters']) - ids = self.search(cr, uid, filters, context=context) - self.write(cr, uid, ids, {'state':'sending', 'folder':'sent'}, context) + if not ids: + filters = [('folder', '=', 'outbox'), ('state', '!=', 'sending')] + if 'filters' in context: + filters.extend(context['filters']) + ids = self.search(cr, uid, filters, context=context) + self.write(cr, uid, ids, {'state':'sending', 'folder':'sent'}, context) for message in self.browse(cr, uid, ids, context): try: attachments = [] for attach in message.attachment_ids: attachments.append((attach.datas_fname ,attach.datas)) + smtp_account = False + if message.account_id: + account_id = smtp_account + else: + smtp_ids = account_obj.search(cr, uid, [('default','=',True)]) + if smtp_ids: + smtp_account = account_obj.browse(cr, uid, smtp_ids, context)[0] tools.email_send(message.email_from, message.email_to, message.name, message.message, email_cc=message.email_cc, email_bcc=message.email_bcc, reply_to=message.reply_to, attach=attachments, openobject_id=message.message_id, - subtype=message.sub_type, x_headers=message.x_headers, priority=message.priority) + subtype=message.sub_type, x_headers=message.x_headers, priority=message.priority, debug=message.debug, + smtp_email_from=smtp_account and smtp_account.email_id or None, smtp_server=smtp_account and smtp_account.smtpserver or None, + smtp_port=smtp_account and smtp_account.smtpport or None, smtp_ssl=smtp_account and smtp_account.smtpssl or False, + smtp_user=smtp_account and smtp_account.smtpuname or None, smtp_password=smtp_account and smtp_account.smtppass or None) except Exception, error: logger = netsvc.Logger() logger.notifyChannel("email-template", netsvc.LOG_ERROR, _("Sending of Mail %s failed. Probable Reason:Could not login to server\nError: %s") % (message.id, error)) diff --git a/addons/email/email_message_view.xml b/addons/email/email_message_view.xml index 43bde18..bb9e032 100644 --- a/addons/email/email_message_view.xml +++ b/addons/email/email_message_view.xml @@ -48,6 +48,7 @@ + diff --git a/addons/email/email_smtp_server.py b/addons/email/email_smtp_server.py index 44cc5ac..13e3f2d 100644 --- a/addons/email/email_smtp_server.py +++ b/addons/email/email_smtp_server.py @@ -157,7 +157,7 @@ unless it is already specified in the From Email, e.g: John Doe ", return [(a["id"], "%s (%s)" % (a['email_id'], a['name'])) for a in self.read(cr, uid, ids, ['name', 'email_id'], context=context)] def email_send(cr, uid, email_from, email_to, subject, body, model=False, email_cc=None, email_bcc=None, reply_to=False, attach=None, - openobject_id=False, subtype='plain', x_headers=None, priority='3', smtp_id=False): + openobject_id=False, debug=False, subtype='plain', x_headers=None, priority='3', smtp_id=False): attachment_obj = self.pool.get('ir.attachment') email_msg_obj = self.pool.get('email.message') msg_vals = { @@ -176,6 +176,7 @@ unless it is already specified in the From Email, e.g: John Doe ", 'sub_type': subtype or '', 'x_headers': x_headers or '', 'priority': priority, + 'debug': debug, 'folder': 'outbox', 'state': 'waiting', } diff --git a/addons/email_template/email_template.py b/addons/email_template/email_template.py index c29dee5..4d14df3 100644 --- a/addons/email_template/email_template.py +++ b/addons/email_template/email_template.py @@ -658,7 +658,7 @@ This is useful for CRM leads for example"), context=context ) # TODO : manage return value of all the records - result = self.pool.get('email.message').send_this_mail(cursor, user, [mailbox_id], context) + result = self.pool.get('email.message').email_send(cursor, user, [mailbox_id], context) return result email_template() -- 1.7.10.4