接收邮件服务器成功并作相应处理有三种方法:
1.使用服务器的创建新记录
然后写一个 model继承指写的类型。这时可以重写new_message方法达到目的。
def message_new(self, cr, uid, msg, custom_values=None, context=None):
""" Overrides mail_thread message_new that is called by the mailgateway
through message_process.
This override updates the document according to the email.
"""
if custom_values is None:
custom_values = {}
street = html2plaintext(msg.get('body')) if msg.get('body') else ''
defaults = {
'name': msg.get('subject') or _("No Subject"),
'street': street,
'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
'user_id': False,
'partner_id': msg.get('author_id', False),
}
defaults.update(custom_values)
return super(ResPartner, self).message_new(cr, uid, msg, custom_values=defaults, context=context)
2.使用服务器动作加别名
3.只使用别名
使用别名是可以指定一个model
实现这个model的update_message方法(一般指定用户,因为用户有一个portaltemplate,是用来收这个消息的)
def message_update(self, cr, uid, ids, msg, update_vals=None, context=None):
for user in self.browse(cr, uid, ids, context=context):
print user.alias_defaults
street = html2plaintext(msg.get('body')) if msg.get('body') else ''
defaults = {
'name': msg.get('subject') or _("No Subject"),
'street': street,
'email_from': msg.get('from'),
'email_cc': msg.get('cc'),
'user_id': False,
'partner_id': msg.get('author_id', False),
}
print defaults
return True