Turkesh Patel (openERP) has proposed merging 
lp:~openerp-dev/openobject-addons/trunk-mail-alias-jam-mail-process-tpa into 
lp:~openerp-dev/openobject-addons/trunk-mail-alias-jam.

Requested reviews:
  Jigar Amin  (OpenERP) (jam-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-mail-alias-jam-mail-process-tpa/+merge/111340

[ADD] added a new message_catchall() method on mail_thread 
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-mail-alias-jam-mail-process-tpa/+merge/111340
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-addons/trunk-mail-alias-jam.
=== modified file 'mail/mail_thread.py'
--- mail/mail_thread.py	2012-06-20 08:33:36 +0000
+++ mail/mail_thread.py	2012-06-21 06:17:21 +0000
@@ -447,11 +447,61 @@
         return msgs
 
 
+    def _get_user(self, cr, uid, alias, context):
+        """
+            return user_id based on alias
+            else return id of admin
+        """
+
+        user_obj = self.pool.get('res.user')
+        if alias.alias_user_id:
+            user_id = alias_id.alias_user_id.id
+        #if user_id not defined in the alias then search related user using name of Email sender
+        else if:
+            frm = msg.get('from')
+            user_ids = user_obj.search(cr, uid, [('name','=',frm)], context)
+            if user_ids:
+                user_id = user_obj.browse(cr, uid, user_ids[0], context).id
+        return user_id or 1
+
     def message_catchall(self, cr, uid, message, context=None):
-        """TODO proper docstring, inspired by messsage_process()"""
-        # TODO
-        pass
-
+        """
+            Process incoming mail and call messsage_process using details of the mail.alias model
+            else raise Exception so that mailgate script will reject the mail and
+            send notification mail sender that this mailbox does not exist so your mail have been rejected.
+        """
+
+        alias_obj = self.pool.get('mail.alias')
+        user_obj = self.pool.get('res.user')
+        mail_message = self.pool.get('mail.compose.message')
+
+        if isinstance(message, xmlrpclib.Binary):
+            message = str(message.data)
+
+        # Parse Message
+        # Warning: message_from_string doesn't always work correctly on unicode,
+        # we must use utf-8 strings here :-(
+        if isinstance(message, unicode):
+            message = message.encode('utf-8')
+        msg_txt = email.message_from_string(message)
+        msg = mail_message.parse_message(msg_txt, save_original=save_original)
+
+        alias_name = msg.get('to')
+        alias_ids = mail_alias.search(cr, uid, [('alias_name','=',alias_name)],context)
+        alias_id = mail_alias.browse(cr, uid, alias_ids[0], context)
+        #if alias found then call message_process method.
+        if alias_id:
+            user_id = self._get_user(self, cr, uid, alias_id, context)
+            self.message_process(self, cr, user_id, alias_id.alias_model_id.id, message, alias_id.alias_defaults or False , False, False, alias_id.alias_force_thread_id or False, context)
+        #if alis not found give Exception
+        else:
+            _logger.warning("This mailbox does not exist so mail gate will reject this mail.")
+            frm = user_obj.browse(cr, uid, uid, context).user_email
+            sub = "Mail Rejection" + msg.get('subject')
+            message = "Respective mailbox does not exist so your mail have been rejected" + msg
+            mail_message.send_mail(cr, uid, {'email_from': frm,'email_to': msg.get('from'),'subject': sub, 'body_text': message}, context)
+
+        return True
 
     #------------------------------------------------------
     # Email specific

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to