odoo10中的郵件提醒

odoo10中郵件提醒配置以下:api

1.配置出向郵件服務器服務器

  打開開發者模式,設置-->技術-->email-->出向郵件服務器dom

  設置以下:學習

  

  若是配置成功,點擊’測試鏈接‘,會出現以下彈出框:測試

  

2.設置公司郵箱爲剛纔配置的郵件地址ui

  設置-->用戶-->公司,修改公司郵箱地址spa

 

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

 

說明:rest

  對於郵件接收的,配置起來比較麻煩,到如今整個流程沒有走通,就不說了,若是僅僅是針對郵件提醒的話,上面是沒有問題的。code

  關於郵件接收:

  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

相關文章
相關標籤/搜索