• odoo10中的邮件提醒


    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

  • 相关阅读:
    嵌套循环
    for循环
    while循环
    switch多选择结构
    python9--内存管理 引用计数 标记清除 分代回收
    python8--文件操作 with。。。open语法
    python7 数据类型的相互转化 字符编码
    python6-深浅拷贝 元组类型 字典类型 集合类型
    python5 数字类型 字符串类型 列表类型
    python4 分支结构,循环结构 for循环
  • 原文地址:https://www.cnblogs.com/edi-kai/p/11118448.html
Copyright © 2020-2023  润新知