[ADD] added message_catchall method.
bzr revid: tpa@tinyerp.com-20120621061405-uofftetkrptjo6mu
This commit is contained in:
parent
e12390e51d
commit
4d1a89e006
|
@ -447,11 +447,61 @@ class mail_thread(osv.osv):
|
|||
return msgs
|
||||
|
||||
|
||||
def message_catchall(self, cr, uid, message, context=None):
|
||||
"""TODO proper docstring, inspired by messsage_process()"""
|
||||
# TODO
|
||||
pass
|
||||
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):
|
||||
"""
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue