[MERGE] merge from trunk addons
[odoo/odoo.git] / addons / email_template / email_template_mailbox.py
old mode 100644 (file)
new mode 100755 (executable)
index 51d73ff..7483ade
@@ -25,6 +25,7 @@ import time
 import netsvc
 from tools.translate import _
 import tools
+import base64
 
 LOGGER = netsvc.Logger()
 
@@ -40,7 +41,7 @@ class email_template_mailbox(osv.osv):
         to periodically send emails
         """
         try:
-            self.send_all_mail(cursor, user, context)
+            self.send_all_mail(cursor, user, context=context)
         except Exception, e:
             LOGGER.notifyChannel(
                                  "Email Template",
@@ -62,28 +63,40 @@ class email_template_mailbox(osv.osv):
         return True
     
     def send_this_mail(self, cr, uid, ids=None, context=None):
+        #previous method to send email (link with email account can be found at the revision 4172 and below
         result = True
         attachment_pool = self.pool.get('ir.attachment')
         for id in (ids or []):
             try:
                 account_obj = self.pool.get('email_template.account')
                 values = self.read(cr, uid, id, [], context) 
-                payload = {}
+                attach_to_send = None
+                
                 if values['attachments_ids']:
-                    for attid in values['attachments_ids']:
-                        attachment = attachment_pool.browse(cr, uid, attid, context)#,['datas_fname','datas'])
-                        payload[attachment.datas_fname] = attachment.datas
-                result = account_obj.send_mail(cr, uid,
-                              [values['account_id'][0]],
-                              {'To':values.get('email_to') or u'',
-                               'CC':values.get('email_cc') or u'',
-                               'BCC':values.get('email_bcc') or u'',
-                               'Reply-To':values.get('reply_to') or u''},
-                              values['subject'] or u'',
-                              {'text':values.get('body_text') or u'', 'html':values.get('body_html') or u''},
-                              payload=payload,
-                              message_id=values['message_id'], 
-                              context=context)
+                    attach_to_send = self.pool.get('ir.attachment').read(cr, uid, values['attachments_ids'], ['datas_fname','datas', 'name'])
+                    attach_to_send = map(lambda x: (x['datas_fname'] or x['name'], base64.decodestring(x['datas'])), attach_to_send)
+                
+                if values.get('body_html'):
+                    body = values.get('body_html')
+                    subtype = "html"
+                else :
+                    body = values.get('body_text')
+                    subtype = "plain"
+                    
+                result = tools.email_send(
+                    values.get('email_from') or u'',
+                    [values.get('email_to')],
+                    values['subject'] or u'', 
+                    body or u'',
+                    reply_to=values.get('reply_to') or u'',
+                    email_bcc=values.get('email_bcc') or u'',
+                    email_cc=values.get('email_cc') or u'',
+                    subtype=subtype,
+                    attach=attach_to_send,
+                    openobject_id=values['message_id']
+                )
+                
+
                 if result == True:
                     account = account_obj.browse(cr, uid, values['account_id'][0], context=context)
                     if account.auto_delete:
@@ -196,8 +209,6 @@ class email_template_mailbox(osv.osv):
         It just changes the folder of the item to "Trash", if it is no in Trash folder yet, 
         or completely deletes it if it is already in Trash.
         """
-        if not context:
-            context = {}
         to_update = []
         to_remove = []
         for mail in self.browse(cr, uid, ids, context=context):