【问题标题】:Odoo adds "postmaster" prefix to sender addressOdoo 为发件人地址添加“postmaster”前缀
【发布时间】:2015-08-31 12:28:34
【问题描述】:

显然,ODOO 确实为外发电子邮件的发件人地址添加了“postmaster”前缀(例如“postmaster-[user]@[domain]”)。如何抑制这种行为?

【问题讨论】:

  • 我将文件lib/python2.7/site-packages/odoo-8.0-py2.7.egg/openerp/addons/base/ir/ir_mail_server.pyodoo8/build/lib.linux-x86_64-2.7/openerp/addons/base/ir/ir_mail_server.pyodoo8/openerp/addons/base/ir/ir_mail_server.py 中的postmaster = get_param(cr, uid, 'mail.bounce.alias', default='postmaster-odoo', context=context,) 部分更改为postmaster = get_param(cr, uid, 'mail.bounce.alias', default='odoo', context=context,)。但不幸的是,这些更改没有任何效果。

标签: odoo odoo-8


【解决方案1】:

删除“设置”->“技术”->“参数”->“系统参数”下的所有通用参数(mail.catchall.domain 和 mail.catchall.alias)就可以了。

【讨论】:

  • 但是如何使用别名系统,例如没有这些参数的项目?
  • 它就是这样工作的。但是很高兴知道这在后端是如何工作的。这些参数是什么?
  • 很高兴您自己找到了原因,因为我们不再使用 Odoo。
【解决方案2】:

我在source code 中发现了一个错误。它使用mail.bounce.alias 而不是mail.catchall.alias

def _get_default_bounce_address(self, cr, uid, context=None):
    '''Compute the default bounce address.

    The default bounce address is used to set the envelop address if no
    envelop address is provided in the message.  It is formed by properly
    joining the parameters "mail.catchall.alias" and
    "mail.catchall.domain".

    If "mail.catchall.alias" is not set it defaults to "postmaster-odoo".

    If "mail.catchall.domain" is not set, return None.

    '''
    get_param = self.pool['ir.config_parameter'].get_param
    postmaster = get_param(cr, SUPERUSER_ID, 'mail.bounce.alias',
                            default='postmaster-odoo',
                            context=context,)
    domain = get_param(cr, SUPERUSER_ID, 'mail.catchall.domain', context=context)
    if postmaster and domain:
        return '%s@%s' % (postmaster, domain)

因此,如果您填写 mail.bounce.alias 应该可以工作。无论如何,我必须在源代码中再修改几处以使其按我的意愿工作:

def send_email(self, cr, uid, message, mail_server_id=None, smtp_server=None, smtp_port=None,
               smtp_user=None, smtp_password=None, smtp_encryption=None, smtp_debug=False,
               context=None):

    smtp_from = self._get_default_bounce_address(cr, uid, context=context)
    if not smtp_from:
        smtp_from = message['From']   # this is only for the smtp
    assert smtp_from, "The Return-Path or From header is required for any outbound email"

    # [...]

您也可以在build_email 方法中修改email_from。但是你应该在Odoo配置文件中填写参数email_from

def build_email(self, email_from, email_to, subject, body, email_cc=None, email_bcc=None, reply_to=False,
           attachments=None, message_id=None, references=None, object_id=False, subtype='plain', headers=None,
           body_alternative=None, subtype_alternative='plain'):

    email_from = tools.config.get('email_from')

    # [...]

我想我什么都没忘记

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2018-05-24
    • 2018-03-10
    • 2012-04-03
    相关资源
    最近更新 更多