在 Odoo 中通过电子邮件服务器发送和接收电子邮件

Odoo 在线或 Odoo.sh 用户

由于**Odoo为数据库**设置了自己的邮件服务器,因此发送和接收邮件均可立即生效。因此,对于**Odoo Online**和**Odoo.sh**客户而言,无需进行任何配置!

除非需要使用外部邮件服务器发送大批量群发邮件,否则只需正常使用标准的在线 Odoo 数据库即可,因为已预先配置了发送电子邮件的功能。

重要

Odoo 服务器有每日电子邮件限制,以防止滥用。对于**企业版**订阅的数据库,默认限制为每天发送 200 封电子邮件。在某些情况下,此限制可以提高。更多信息,请参阅 FAQ 或联系技术支持。

本文档的范围

本文档**主要针对Odoo内部数据库**,与`Odoo 云端版<https://www.odoo. com/trial>`_和`Odoo.sh <https://www.odoo.sh>`_不同,Odoo 内部数据库无法从Odoo 收发电子邮件的开箱即用解决方案中获益。必须为内部数据库配置接收和发送服务器。

下面的章节包含了关于如何将外部电子邮件服务器与Odoo集成的信息。

警告

如果公司没有人受雇管理电子邮件服务器,则强烈推荐使用 Odoo 在线版和 Odoo.sh。在这些 Odoo 托管类型中,电子邮件的发送和接收都是即时进行的,并由专业人员进行监控。不过,如果公司希望维护电子邮件服务器的声誉,也可以使用自己的电子邮件服务器。欲了解更多信息,请参阅 :doc:` 在 Odoo 中配置 DNS 记录以发送电子邮件<email_domain>`

默认通知系统

Odoo 中的文档(如 CRM 商机、销售订单、发票等)都有一个讨论线程,称为 chatter

当数据库用户在聊天工具中发布消息时,该消息将作为通知通过电子邮件发送给该文档的关注者(发送者除外)。如果关注者回复了消息,会更新沟通栏,Odoo 会将另一个回复作为通知转发给关注者。从用户或外部用户发送回聊天的消息将通过其各自的电子邮件或其*联系人*记录中列出的姓名显示在沟通栏中。

这些通知使用默认发件人地址发送。有关更多信息,请参阅 使用默认电子邮件地址

管理出站邮件

作为系统管理员,进入 Odoo 的 设置 ‣ 常规设置 ‣ 讨论,并启用 自定义电子邮件服务器 选项。然后,点击 保存。接下来,点击:guilabel:外发邮件服务器,并点击:guilabel:创建,在 Odoo 中创建一个新的外发邮件服务器记录。参考外部电子邮件服务器的 SMTP 数据。填写所有信息后,点击 测试连接

備註

确保发出的域在 DNS (域名系统) 上设置了 : abbr:SPF (发件人策略框架)、: abbr:DKIM (域名密钥识别邮件)DMARC (基于域的报文验证、报告和一致性),这将提高可送达性。更多信息请参阅 配置 DNS 记录以便在 Odoo 中发送电子邮件

端口限制

请注意,在 Odoo 在线版和 Odoo.sh 平台上,出于安全原因,端口 25 已被阻止。请尝试使用端口 465、587 或 2525。

使用默认的“发件人”电子邮件地址

有时,电子邮件的」From」(传出)地址可能属于不同的域,这可能是一个问题。

例如,如果电子邮件地址为 mary/@customer.example.com 的客户回复了一条消息,Odoo 会尝试将同一封电子邮件重新分配给线程中的其他订阅者。但是,如果域名`customer.example.com`出于安全考虑禁止这种使用方式,Odoo 试图重新分发的电子邮件就会被某些收件人的电子邮件服务器拒绝。

为避免这一问题,Odoo 使用来自同一授权域的 「发件人」 地址发送所有电子邮件。

激活:ref:开发者模式<developer-mode> 并进入 设置 ‣ 技术 ‣ 参数 ‣ 系统参数菜单,访问 系统参数

要强制从电子邮件地址发送电子邮件,需要在数据库的系统参数中设置以下密钥组合:

  • mail.default.from:接受本地部分或完整的电子邮件地址作为值

  • mail.default.from_filter:接受域名或完整的电子邮件地址作为值

備註

mail.default.from_filter`仅适用于`odoo-bin`配置或默认的 Odoo 电子邮件服务器,否则可使用 `ir.mail_server`中的 `from_filter 字段设置该参数。

该字段可以是域名或整个电子邮件地址,也可以为空。如果发件人的电子邮件地址与此设置过滤器不匹配,则电子邮件将使用两个系统参数的组合进行封装:mail.default.from`和 `mail.catchall.domain

Example

在下面的示例中,发件人电子邮件地址被替换为两个系统参数(mail.default.from`和`mail.catchall.domain)的组合。这是 Odoo 中的默认通知配置:"Admin" <admin@example.com> => "Admin" <notifications@mycompany.com>

换言之,如果作者的电子邮件地址与`mail.default.from_filter`不匹配,电子邮件地址就会被`mail.default.from`(如果其中包含完整的电子邮件地址)或`mail.default.from`和`mail.catchall.domain`的组合所取代。

如果`from_filter`包含一个完整的电子邮件地址,而 mail.default.from 与该地址相同,那么所有与 `mail.default.from`不同的电子邮件地址都将封装在`mail.default.from`中。

利用外发电子邮件服务器上的 「发件人」 筛选器

通过 FROM Filtering 字段,可根据 Odoo 代表发送的 From 电子邮件地址或域使用特定的外发电子邮件服务器。此设置可用于提高从数据库发送电子邮件的可送达性或发送成功率。设置:guilabel:FROM Filtering 字段还可用于在多公司环境中从不同域发送。在 Odoo 中通过导航至 设置 ‣ 讨论 ‣ 自定义邮件服务器 ‣ 发送邮件服务器 ‣ 新建 访问此字段。

外发邮件服务器设置和 FROM 筛选器设置。

当设置 FROM Filtering 字段时,从 Odoo 发送电子邮件时,将按以下顺序选择电子邮件服务器:

  1. 首先,Odoo 会搜索与外发邮件中定义的 From Filtering 值(电子邮件地址)具有相同 FROM Filtering 值的电子邮件服务器。例如,如果 From 值(电子邮件地址)是 test/@example.com,则只返回 FROM Filtering 值等于 test@example.com 的电子邮件服务器。

  2. 但是,如果未找到使用 From 值的电子邮件服务器,则 Odoo 会搜索与外发邮件中定义的 From 值(电子邮件地址)具有相同 * 域 * 的电子邮件服务器。例如,如果 From 电子邮件地址为 test/@example.com,则只返回 FROM Filtering 值等于 example.com 的电子邮件服务器。

如果在检查域名后未找到电子邮件服务器,则 Odoo 会返回未设置任何 FROM Filtering 值的所有电子邮件服务器。

如果查询没有结果,Odoo 将使用系统参数: `mail.default.from`搜索电子邮件服务器。首先,列出的电子邮件地址会尝试匹配电子邮件服务器,然后域会尝试查找匹配。如果没有找到电子邮件服务器,Odoo 会返回第一个发出的电子邮件服务器(按优先级排序)。

備註

如果找到多个电子邮件服务器,Odoo 会根据优先级使用第一个服务器。例如,如果有两个电子邮件服务器,其中一个的优先级为 10,另一个的优先级为 20,则优先使用优先级为 10 的电子邮件服务器。

为交易邮件和群发邮件设置不同的专用服务器

在 Odoo 中,交易邮件和群发邮件可使用单独的电子邮件服务器。例如,交易邮件使用 Postmark 或 SendinBlue,群发邮件使用 Amazon SES、Mailgun、Sendgrid 或 Mailjet

重要

默认的出站邮件服务器已配置。除非出于技术原因需要使用特定的外部出站邮件服务器,否则您不应创建替代邮件服务器。

要执行此操作,应首先激活 开发者模式,然后转到 设置 ‣ 技术 ‣ 外发 电子邮件服务器。在那里,创建两个外发电子邮件服务器设置;一个用于事务性电子邮件,另一个用于邮件群发服务器。确保交易服务器优先于邮件群发服务器,为事务性邮件服务器提供较低的优先级编号。

现在,进入 电邮营销 ‣ 设置 并启用 特定服务器。选择适当的电子邮件服务器。通过这些设置,Odoo 会使用优先级较低的服务器发送事务性电子邮件,并使用此处选定的服务器发送群发邮件。请注意,在这种情况下,域的发件人策略框架(SPF)记录必须设置为同时包含事务和群发邮件服务器。

管理入站信息

Odoo依赖通用的电子邮件别名来收取入站邮件。

  • 从 Odoo 发送的**回复消息**会根据模型的别名(如有)或全部别名(catchall@)转发到原始讨论主题(以及所有关注者的收件箱)。对没有自定义别名的模型信息的回复将使用 catchall 别名 (catchall@mycompany.odoo.com)。不过,catchall 地址不像其他别名那样可以附加其他操作,它只用于收集回复。

  • 被退邮件 用作返回路径。其中一个特别有用的例子是在 Odoo 电子邮件营销 <https://www.odoo.com/page/email-marketing>`__中。在这种情况下,如果邮件在上个月被退回的次数过多(5 次),并且退回的时间间隔为一周,就会被选择退出。这样做是为了避免因邮件服务器错误而将某人列入黑名单。如果满足这些条件,则认为邮件无效并将其列入黑名单。在:guilabel: `电子邮件营销配置菜单 的:guilabel: `黑名单电子邮件地址`下,联系人将被添加日志备注。

    在沟通栏(电子邮件营销之外)中跳转的邮件会弹出一个红色信封,表示发送失败。这有助于了解销售订单或发票是否未送达。

  • 原始邮件:多个业务对象都有自己的别名,用于在 Odoo 中根据收到的邮件创建新记录:

根据您的邮件服务器,可能有几种方法来收取电子邮件。最简单也最推荐的方法是在邮件服务器中按Odoo别名管理电子邮箱。

  • 在邮件服务器中创建相应电子邮件地址(catchall@bounce@sales@ 等)。

  • 设置 ‣ 常规设置 ‣ 讨论`中设置 :guilabel: 别名域`名称。更改 别名域 将更改数据库的 catchall 域。

  • 如果数据库的托管类型是本地部署的 Odoo,请在 Odoo 中为每个别名创建一个 入站邮件服务器。要创建新的收件服务器,请访问 设置‣讨论‣自定义邮件服务器‣内收邮件服务器‣新建 根据电子邮件提供商的设置填写表格。将 对入站邮件执行的操作 字段留空。填写完所有信息后,点击 测试并确认

    Odoo中的接收邮件服务器配置。
  • 如果数据库的托管类型是 Odoo 在线版或 Odoo.sh,建议将收到的邮件重定向或转发到 Odoo 的域名,而不是外部电子邮件服务器。这样,接收到的邮件就不会延迟。所有电子邮件地址的重定向都应设置为电子邮件服务器中的 Odoo 域名(例如,将 catchall@mydomain.ext 重定向为 catchall@mycompany.odoo.com)。

所有别名均可在 Odoo 中自定义。对象别名可通过导航至 设置 ‣ 技术菜单 ‣ 电邮 ‣ 别名 在各自的配置视图中进行编辑。

要编辑 catchall 和 bounce 别名,首先激活 开发者模式。然后,进入 设置 ‣ 技术 ‣ 参数 ‣ 系统参数,自定义别名(mail.catchall.alias & mail.bounce.alias)。这类更改应在数据库启用前完成。如果客户在更改后回复,系统将无法识别旧的别名,也就无法收到回复。

默认情况下,内部部署数据库每 5 分钟获取一次入站邮件。

備註

可以在ref:开发模式<developer-mode>`中修改该值。进入菜单选择:`设置--> 技术--> 自动化--> 预订操作,查找:guilabel:电子邮件:收取邮件服务

防止反馈循环的系统参数

在 Odoo 中,有两个系统参数有助于防止出现电子邮件循环。这些参数是在 Odoo 16 中引入的,目的是防止别名创建过多记录,并防止回覆邮件地址的反馈循环。它们存在于数据库中,但不在*系统参数*中。要覆盖以下默认值,需要将它们添加进来。

两个系统参数如下:

  • `mail.gateway.loop.minutes`(默认为 120 分钟)

  • `mail.gateway.loop.threshold`(默认为 20)

首先启用 开发者模式,然后导航至 设置 ‣ 技术菜单 ‣ 参数 ‣ 系统参数,在 Odoo 中添加这些字段。根据需要更改这些参数的值。

当 Odoo 数据库中的通用电子邮件地址或任何别名收到电子邮件时,Odoo 会查看系统参数 mail.gateway.loop.threshold 中定义的给定时间段内收到的邮件。如果收到的邮件是发送到一个别名,那么 Odoo 将参考系统参数 mail.gateway.loop.threshold 并确定该值作为该别名在给定时间内允许创建的记录数(mail.gateway.loop.minutes 的值)。

此外,当收到发送至总括电子邮件地址的电子邮件时,Odoo 将在设定的时间段内(如系统参数 `mail.gateway.loop.minutes`中的值所述)参考数据库收到的电子邮件。然后,Odoo 将确定收到的任何电子邮件是否与指定时间段内收到的电子邮件相匹配,并在检测到重复电子邮件时防止出现反馈循环。

允许别名域系统参数

收件别名是在 Odoo 数据库中设置的,用于通过接收收件邮件创建记录。要查看 Odoo 数据库中设置的别名,首先激活 开发者模式。然后,进入 设置应用程序 ‣ 技术 ‣ 电子邮件部分 ‣ 别名

下面的系统参数 mail.catchall.domain.allowed 设置了允许的别名域值(用逗号分隔),可筛选掉正确发送给别名的电子邮件。设置别名可创建票据、潜在客户、商机等的域,可消除仅有前缀别名(而非域)的电子邮件地址的误报。

在某些情况下,如果收到的电子邮件具有相同的别名前缀,而收到的电子邮件地址具有不同的域,则会在 Odoo 数据库中进行匹配。在收到的电子邮件的发件人、收件人和 抄送 电子邮件地址中都存在这种情况。

Example

当 Odoo 接收到发件人、收件人或 抄送 电子邮件地址(例如 commercial@gmail.comcommercial@odoo.net)中包含`commercial`前缀别名的电子邮件时,数据库会错误地将该电子邮件视为完整的`商务`别名(具有不同的域),并因此创建工单/潜在客户/商机等。

要添加 mail.catchall.domain.allowed 系统参数,首先要激活 开发者模式。然后,进入 设置应用程序 ‣ 技术 ‣ 参数部分 ‣ 系统参数。点击 创建。然后,在 密钥 字段中输入 mail.catchall.domain.allowed

然后,在 数值 字段中添加用逗号分隔的域(如果是复数域)。手动 保存,系统参数立即生效。

mail.catchall.domain.allowed 系统参数集,键和值高亮显示。