接收邮件服务器成功并作相应处理有三种方法:
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