[MERGE] lp:~openerp-dev/openobject-addons/trunk-mail-alias-jam-mail-process-tpa

bzr revid: jam@tinyerp.com-20120621125828-z1m50x0nagaer4g2
This commit is contained in:
Jigar Amin - OpenERP
2012-06-21 18:28:28 +05:30
+55 -4
View File
@@ -447,11 +447,62 @@ 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):
"""
param alias: browse record of alias.
return: int user_id.
"""
user_obj = self.pool.get('res.user')
user_id = 1
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:
from_email = msg.get('from')
user_ids = user_obj.search(cr, uid, [('name','=',from_email)], context)
if user_ids:
user_id = user_obj.browse(cr, uid, user_ids[0], context).id
return user_id
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, custom_values = alias_id.alias_defaults or {}, thread_id = alias_id.alias_force_thread_id or {}, context)
#if alis not found give Exception
else:
#_logger.warning("This mailbox does not exist so mail gate will reject this mail.")
from_email = 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': from_email,'email_to': msg.get('from'),'subject': sub, 'body_text': message}, context)
return True
#------------------------------------------------------
# Email specific