odoo10中邮件提醒配置如下:

1.配置出向邮件服务器

  打开开发者模式,设置–>技术–>email–>出向邮件服务器

  设置如下:

  

  如果配置成功,点击’测试连接‘,会出现如下弹出框:

  

2.设置公司邮箱为刚才配置的邮件地址

  设置–>用户–>公司,修改公司邮箱地址

 

3.模型中使用

 1 from odoo import models, fields, api, tools
 2 
 3 
 4 class InvoiceBill(models.Model):
 5     """
 6 
 7     """
 8     _name = \'esw.invoice.bill\'
 9     _inherit = [\'mail.alias.mixin\', \'mail.thread\', \'ir.needaction_mixin\']
10     _description = u\'邮件学习测试\'
11     _order = \'create_date desc\'
12 
13     def _get_domain_of_invoice_manager(self):
14         manager = self.env[\'ir.model.data\'].xmlid_to_object(\'mail_test.esw_invoice_bill_manager_group\')[0]
15         return [(\'id\', \'in\', manager.users.ids)]
16 
17     name = fields.Char(u\'单据说明\')
18     invoice_manager = fields.Many2one(\'res.users\', u\'仓库主管\', domain=_get_domain_of_invoice_manager)
19     remark = fields.Text(u\'备注\')
20     alias_id = fields.Many2one(\'mail.alias\', string=\'别名\', ondelete="restrict", required=True)
21 
22     state = fields.Selection(
23         [
24             (\'init\', u\'初始化\'),
25             (\'revert\', u\'撤回\'),
26             (\'submit\', u\'已提交\'),
27             (\'delivered\', u\'已发货\'),
28             (\'completed\', u\'完成\'),
29         ],
30         default=\'init\',
31         track_visibility=\'onchange\',
32         required=True,
33     )
34 
35     @api.multi
36     def _track_template(self, tracking):
37         """
38         前提:不配置域别名[mail.catchall.domain]
39         此处将该参数[no_auto_thread]设置为True,可以使replay_to参数的邮件值为预期值,否则会是模板中配置的${xx.xx}
40         这样可以达到正常发送提醒邮件,且发送邮件中的发送人/接收人/reply_to 达到预期的值;
41         收件人回复后也能也能收取,会显示为消息,也就是mail.message,并且不会跟原来的邮件做关联
42 
43         如果设置域别名[mail.catchall.domain]
44         虽然参数[no_auto_thread]不设置,邮件中replay_to参数也会是预期值,但是邮件发送失败,走了odoo中自带的email_from规则(odoo10参见mail_mail.py line-248),
45         如下:
46             bounce_alias = self.env[\'ir.config_parameter\'].get_param("mail.bounce.alias")
47                 catchall_domain = self.env[\'ir.config_parameter\'].get_param("mail.catchall.domain")
48                 if bounce_alias and catchall_domain:
49                     if mail.model and mail.res_id:
50                         headers[\'Return-Path\'] = \'%s+%d-%s-%d@%s\' % (bounce_alias, mail.id, mail.model, mail.res_id, catchall_domain)
51                     else:
52                         headers[\'Return-Path\'] = \'%s+%d@%s\' % (bounce_alias, mail.id, catchall_domain)
53         对于设置了域别名[mail.catchall.domain]的情况一直没有尝试成功
54         :param tracking:
55         :return:
56         """
57         res = super(InvoiceBill, self)._track_template(tracking)
58 
59         template = self.env.ref(\'mail_test.esw_mail_test_template\')
60 
61         res[\'template_id\'] = (template, {
62             \'composition_mode\': \'mass_mail\',
63             \'no_auto_thread\': True,
64         })
65         return res

 

说明:

  对于邮件接收的,配置起来比较麻烦,到现在整个流程没有走通,就不说了,如果仅仅是针对邮件提醒的话,上面是没有问题的。

  关于邮件接收:

  1.需要配置收件邮件服务器;

  2.需要配置参数,设置–>技术–>参数–>系统参数,设置如下:

  

  mail.bounce.alias是你发送邮箱@前面的字符串,mail.catchall.alias是接收别名,不用接收不需要配置;

  还有个系统收取邮件需要配置的 [域别名]–mail.catchall.domain

  3.如果需要跟mail.message关联,好像还需要配置  别名  (我现在就是邮件发出去,当对方回复的时候,系统中关联不起来,不会以邮件的形式存在,而是消息)

  

  接收到消息后,在设置–>技术–>email–>消息中可以查看,

  

  4.收取邮件地址的别名,设置–>技术–>email–>别名,然后需要在模型中重写mail.thread的message_new方法

 

  设计到的模型,mail模块下mail.thread, mail.mail, mail.message,  邮件服务器模型base/ir/ir_mail_server.py

 

版权声明:本文为edi-kai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/edi-kai/p/11118448.html