diff --git a/addons/email/__init__.py b/addons/email/__init__.py index d4d786ed27f..8cfe6029856 100644 --- a/addons/email/__init__.py +++ b/addons/email/__init__.py @@ -19,7 +19,6 @@ # ############################################################################## -#import email_smtp_server import email_message import email_thread import res_partner diff --git a/addons/email/email_message.py b/addons/email/email_message.py index c024de29253..1df4fd200d2 100644 --- a/addons/email/email_message.py +++ b/addons/email/email_message.py @@ -83,7 +83,7 @@ class email_message_common(osv.osv_memory): 'priority':fields.integer('Priority'), 'body': fields.text('Description', translate=True), 'body_html': fields.text('HTML', help="Contains HTML version of email"), - 'smtp_server_id':fields.many2one('ir.mail.server', 'SMTP Server'), + 'smtp_server_id':fields.many2one('ir.mail_server', 'SMTP Server'), } _rec_name='subject' @@ -227,7 +227,7 @@ class email_message(osv.osv): 'debug': debug, 'history': True, 'smtp_server_id': smtp_server_id, - 'state': 'waiting', + 'state': 'outgoing', } email_msg_id = self.create(cr, uid, msg_vals, context) if attach: @@ -247,7 +247,7 @@ class email_message(osv.osv): return email_msg_id def process_retry(self, cr, uid, ids, context=None): - return self.write(cr, uid, ids, {'state':'waiting'}, context) + return self.write(cr, uid, ids, {'state':'outgoing'}, context) def process_email_queue(self, cr, uid, ids=None, context=None): if ids is None: @@ -255,13 +255,13 @@ class email_message(osv.osv): if context is None: context = {} attachment_obj = self.pool.get('ir.attachment') - smtp_server_obj = self.pool.get('ir.mail.server') + smtp_server_obj = self.pool.get('ir.mail_server') if not ids: filters = [('state', '=', 'outgoing')] if 'filters' in context: filters.extend(context['filters']) ids = self.search(cr, uid, filters, context=context) - self.write(cr, uid, ids, {'state':'sending'}, context) + self.write(cr, uid, ids, {'state':'outgoing'}, context) for message in self.browse(cr, uid, ids, context): try: attachments = [] @@ -269,7 +269,7 @@ class email_message(osv.osv): attachments.append((attach.datas_fname ,base64.b64decode(attach.datas))) smtp_server = message.smtp_server_id if not smtp_server: - smtp_ids = smtp_server_obj.search(cr, uid, [('default','=',True)]) + smtp_ids = smtp_server_obj.search(cr, uid, []) if smtp_ids: smtp_server = smtp_server_obj.browse(cr, uid, smtp_ids, context)[0] res = self.send_email(cr, uid, ids, auto_commit=True, context=context) @@ -283,6 +283,22 @@ class email_message(osv.osv): self.write(cr, uid, [message.id], {'state':'exception'}, context) return ids + def send_email(self, cr, uid, ids, auto_commit=False, context=None): + if context is None: + context = {} + smtp_server_obj = self.pool.get('ir.mail_server') + for message in self.browse(cr, uid, ids, context): + try: + if message.state in ['outgoing', 'exception']: + msg_id = smtp_server_obj.send_email(cr, uid, message.email_from, message.email_to, message.body, id=message.smtp_server_id, subject=message.subject) + else: + raise osv.except_osv(_('Error !'), _('Message is not in outgoing state!')) + 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)) + self.write(cr, uid, [message.id], {'state':'exception'}, context) + return False + return True # OLD Code. # def send_all_mail(self, cr, uid, ids=None, context=None): # if ids is None: diff --git a/addons/email/wizard/email_compose_message.py b/addons/email/wizard/email_compose_message.py index 1405971a874..8d05ff39404 100644 --- a/addons/email/wizard/email_compose_message.py +++ b/addons/email/wizard/email_compose_message.py @@ -218,7 +218,7 @@ class email_compose_message(osv.osv_memory): references = mail.references and mail.references + "," + mail.message_id or mail.message_id else: message_id = mail.message_id - email_id = email_message_pool.schedule_with_attach(cr, uid, mail.email_from, mail.email_to, mail.name, mail.description, + email_id = email_message_pool.schedule_with_attach(cr, uid, mail.email_from, mail.email_to, mail.subject, mail.body, model=mail.model, email_cc=mail.email_cc, email_bcc=mail.email_bcc, reply_to=mail.reply_to, attach=attachment, message_id=message_id, references=references, openobject_id=int(mail.res_id), debug=mail.debug, subtype=mail.sub_type, x_headers=mail.headers, priority=mail.priority, smtp_server_id=mail.smtp_server_id and mail.smtp_server_id.id, context=context) diff --git a/addons/email/wizard/email_compose_message_view.xml b/addons/email/wizard/email_compose_message_view.xml index 9cb9a6d43fc..eab36ebc522 100644 --- a/addons/email/wizard/email_compose_message_view.xml +++ b/addons/email/wizard/email_compose_message_view.xml @@ -18,12 +18,12 @@ - + - +