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