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

Odoo 在线或 Odoo.sh 用户

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

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

重要

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

本文档的范围

This document is mainly dedicated to Odoo on-premise databases that do not benefit from an out-of-the-box solution to send and receive emails in Odoo, unlike Odoo Online and Odoo.sh. Incoming and outgoing servers must be configured for on-premise databases.

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

警告

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

默认通知系统

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

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

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

管理出站邮件

As a system administrator, go to Settings ‣ General Settings ‣ Discuss in Odoo, and enable the Custom Email Servers option. Then, click Save. Next, click Outgoing Email Servers and click Create to create a new outgoing mail server record in Odoo. Reference the SMTP data of the external email server. Once all the information has been filled out, click Test Connection.

注解

确保发出的域在 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 的电子邮件服务器。

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

In Odoo a separate email server can be used for transactional emails and mass mailings. Example: Use Postmark or SendinBlue for transactional emails, and Amazon SES, Mailgun, Sendgrid or Mailjet for mass mailings.

重要

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

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

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

管理入站信息

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

  • Reply messages of messages sent from Odoo are routed to their original discussion thread (and to the inbox of all its followers) by the alias of the model if there is any or by the catchall alias (catchall@). Replies to messages of models that do not have a custom alias will use the catchall alias (catchall@mycompany.odoo.com). The catchall address, however, does not have another action attached to it like other aliases might, it is only used to collect replies.

  • 被退邮件 用作返回路径。其中一个特别有用的例子是在 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 中自定义。对象别名可通过导航至 设置 ‣ 技术菜单 ‣ 电邮 ‣ 别名 在各自的配置视图中进行编辑。

To edit catchall and bounce aliases, first activate the developer mode. Then, go to Settings ‣ Technical ‣ Parameters ‣ System Parameters to customize the aliases (mail.catchall.alias & mail.bounce.alias). These types of changes should be completed prior to the database going live. If a customer replies after a change is made then the system will not recognize the old alias, and the reply will not be received.

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

注解

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

Allow alias domain system parameter

Incoming aliases are set in the Odoo database to create records by receiving incoming emails. To view aliases set in the Odoo database, first activate the developer mode. Then, go to Settings app ‣ Technical ‣ Email section ‣ Aliases.

The following system parameter, mail.catchall.domain.allowed, set with allowed alias domain values, separated by commas, filters out correctly addressed emails to aliases. Setting the domain(s) for which the alias can create a ticket, lead, opportunity, etc., eliminates false positives where email addresses with only the prefix alias (not the domain) are present.

In some instances, matches have been made in the Odoo database when an email is received with the same alias prefix and a different domain on the incoming email address. This is true in the sender, recipient, and CC email addresses of an incoming email.

Example

When Odoo receives emails that have the name commercial prefix alias in the sender, recipient, or CC email address(es) (e.g. commercial@gmail.com, commercial@odoo.net), the database falsely treats the email as the full commercial alias (with a different domain), and therefore, creates a ticket/lead/opportunity/etc.

To add the mail.catchall.domain.allowed system parameter, first, activate the developer mode. Then, go to Settings app ‣ Technical ‣ Parameters section ‣ System Parameters. Click Create. Then, type in mail.catchall.domain.allowed for the Key field.

Next, for the Value field, add the domain(s) separated by comma(s) (if plural domains). Manually Save, and the system parameter takes immediate effect.

mail.catchall.domain.allowed system parameter set with key and value highlighted.