第七章 邮箱配置
Odoo原生把邮件能力嵌入在销售、采购、财务、门户、项目和消息区里。报价单可以通过邮件发送给客户,发票可以自动附带PDF,客户可以通过门户链接查看单据,员工也可以在业务单据上直接给客户发消息。
邮箱配置看起来只是填SMTP服务器,实际会影响客户能不能收到报价、能不能重置密码、客户回复能不能回到单据、邮件会不会进垃圾箱,以及多公司、多销售、多域名场景下发件人是否合规。本章我们就来看一下Odoo原生邮件的工作逻辑,以及国内企业邮箱、Outlook、Gmail和多公司邮箱环境下应该怎样落地。
邮件功能用在哪里
Odoo中常见的邮件场景包括:
- 给客户发送报价单、订单确认和发票;
- 给门户用户发送邀请、密码重置和系统通知;
- 在销售订单、发票、项目任务等单据上给客户发送消息;
- 员工收到活动提醒、审批提醒和业务通知;
- 客户回复邮件后,沟通记录回到对应业务单据;
- 邮件模板自动生成主题、正文、按钮和附件。
如果邮件没有配置好,表面上只是“发不出邮件”,实际会影响销售转化、财务开票、门户体验和内部协同。
先理解Odoo邮件链路
Odoo的邮件链路可以分成四部分:
业务单据 -> 邮件模板/消息区 -> 发件服务器 -> 客户邮箱
客户回复 -> 收件服务器/转发/MX -> Odoo邮件路由 -> 对应单据消息区
从实施角度看,要先分清楚三件事:
| 问题 | 说明 |
|---|---|
| 谁发出去 | 使用哪个SMTP或OAuth账号发送邮件 |
| 谁显示为发件人 | 客户看到的From地址是什么 |
| 回复到哪里 | 客户点击回复后,邮件回到哪个邮箱或单据 |
很多国内项目的问题就卡在第二点和第三点:邮箱服务商要求From必须等于登录账号,而Odoo又希望根据业务用户、公司、别名域、catch-all来组织发件和回信。
邮件设置入口
进入 设置,搜索“邮件”,可以看到邮件相关配置。

常见配置包括:
- 自定义电子邮件服务器;
- 发件服务器和收件服务器;
- 邮件别名域;
- 邮件模板;
- 摘要邮件;
- Gmail或Outlook集成;
- 邮件插件或其他集成模块。
不同Odoo版本和安装模块不同,界面上的选项会略有差异。实施时不要只看菜单是否存在,还要确认当前数据库安装了哪些邮件相关模块,以及服务器是否允许访问目标邮箱服务。
原生发件服务器
Odoo发送邮件通常需要发件服务器。常见方式有两类:
| 方式 | 适用场景 |
|---|---|
| SMTP | 企业邮箱、国内邮箱、部分自建邮件服务器 |
| OAuth | Outlook/Office365、Gmail等要求新式认证的邮箱 |
启用自定义邮件服务器后,可以进入发件服务器配置。

一个典型的SMTP发件服务器配置如下:

常见字段包括:
| 字段 | 说明 |
|---|---|
| 描述 | 给管理员看的服务器名称 |
| SMTP Server | 邮箱服务商提供的SMTP地址 |
| SMTP端口 | 常见为465或587 |
| 连接安全性 | SSL/TLS或STARTTLS |
| 用户名 | 邮箱账号 |
| 密码 | 邮箱密码、授权码或应用密码 |
| From Filter | 限定这个服务器处理哪些发件地址或域名 |
国内使用网易、腾讯、阿里等企业邮箱时,经常不是填写登录密码,而是填写邮箱后台生成的授权码。配置完成后,可以先测试连接。

也可以在技术菜单中找到邮件记录,再发送测试邮件。

收到的测试邮件示例:

这里要提醒客户一句:连接成功不等于业务可用。真正要测试的是报价、发票、密码重置、门户邀请这些真实业务邮件能不能送达,客户回复后能不能被正确处理。
原生收件和客户回复
Odoo不只是把邮件发出去,也可以把客户回复收回来,并尽量挂回原来的业务单据。
例如销售人员从报价单发送邮件,客户直接回复这封邮件。如果收件配置、回复地址和邮件路由都正确,回复可以回到对应报价单或销售订单的消息区。
收件通常依赖以下能力之一:
| 方式 | 说明 |
|---|---|
| 收件服务器 | Odoo定时读取IMAP/POP邮箱 |
| 邮件转发 | 邮箱服务商把邮件转发给Odoo处理 |
| MX/mail gateway | 邮件直接进入Odoo邮件网关,常见于更专业部署 |
收件服务器配置示例:

如果企业只想先发报价和发票,第一期可以先只配置发件。如果企业希望客户回复自动留在Odoo单据上,就要认真设计收件、别名域和catch-all。
Catch-all和Bounce
Odoo邮件里经常会遇到两个词:catch-all和bounce。
| 概念 | 简单理解 | 用途 |
|---|---|---|
| catch-all | 全收邮箱 | 接收发给某个域名下各种别名的邮件,再交给Odoo分配 |
| bounce | 退信地址 | 处理退信、代发和邮件返回路径 |
Bounce相关参数可以在系统参数中查看或调整。

在标准海外邮箱环境中,Odoo常使用别名域、catch-all和bounce处理回信、退信和单据匹配。但国内邮箱环境常见限制更多:
- 免费版或普通企业邮箱不支持catch-all;
- 邮箱要求发件人必须等于SMTP认证用户;
- 不允许系统随意代发其他员工邮箱;
- 需要授权码、应用密码或OAuth;
- 对海外服务器登录、批量发送、异常登录有风控;
- SPF、DKIM、DMARC未配置时更容易进垃圾箱。
所以国内项目不要默认照搬海外文档方案,而要先确认邮箱服务商规则。
国内项目的方案选择
第一期实施时,邮箱方案不一定越复杂越好。建议先按业务目标选择。
| 方案 | 适合场景 | 优点 | 注意事项 |
|---|---|---|---|
| 统一发件邮箱 | 小团队、第一期上线、只需发送报价发票 | 简单稳定 | 客户看到的是统一邮箱,不是个人销售邮箱 |
| 统一发件+统一收件 | 需要人工或系统集中处理客户回复 | 容易管理 | 回复不一定自动回到具体单据 |
| 每个用户独立邮箱 | 销售希望用个人邮箱对外沟通 | 客户识别度高 | 配置和维护成本高,容易遇到认证限制 |
| 多公司多邮箱 | 多品牌、多主体、多域名经营 | 发件身份更准确 | 需要严格匹配公司、域名和发件服务器 |
| catch-all/别名域 | 希望客户回复自动回到单据 | 留痕效果好 | 国内邮箱服务商未必支持 |
| OAuth集成 | Outlook、Gmail等新式认证 | 安全合规 | 需要云平台应用和回调地址配置 |
小公司第一期可以先采用简单方案:
统一发件邮箱 -> 发送报价、发票和系统通知
统一收件邮箱 -> 接收客户回复或人工查看
例如:
service@company.com用于系统发件;reply@company.com用于客户回复;finance@company.com用于财务发票相关沟通;- 销售个人邮箱暂时不直接接入Odoo。
流程稳定后,再考虑每个销售使用自己的邮箱、多公司邮箱、catch-all或更复杂的邮件路由。
发送邮件和客户回复测试
邮箱配置完成后,建议用真实业务单据测试。可以创建一张销售订单或报价单,然后向客户邮箱发送邮件。

发送后,消息区会记录已经发出的邮件。

客户收到邮件后的效果示例:

如果客户直接回复邮件,回复地址会进入系统声明的收件邮箱或catch-all邮箱。

在技术菜单中的邮件记录里,可以进一步检查邮件和业务单据之间的关联。

测试时不要只给内部邮箱发一封“Hello”。至少要覆盖:
- 内部邮箱和外部邮箱;
- QQ、网易、腾讯企业邮、Outlook等不同收件方;
- 报价邮件、发票邮件、密码重置邮件和门户邀请;
- PDF附件能否打开;
- 客户回复后是否能被收到;
- 邮件是否进入垃圾箱;
- 测试库是否可能误发真实客户。
这些测试是实施过程中的风险控制,不建议写成客户验收清单,但顾问自己要认真做。
邮件模板
Odoo中很多邮件都由模板生成,例如报价邮件、发票邮件、密码重置邮件和门户邀请邮件。
邮件模板会影响:
- 邮件标题;
- 正文内容;
- 按钮文字;
- 附件;
- 使用语言;
- 公司签名;
- 门户链接。
修改模板前要先复制或记录原始内容。不要随意删除模板变量,例如客户名称、单据链接、门户链接、附件表达式,否则邮件可能无法正常生成。
对于面向客户的模板,建议使用真实业务场景预览:客户能不能看懂、按钮是否明确、公司签名是否正确、附件是否符合预期。邮件模板不是“美化文案”这么简单,它会直接影响客户是否顺利完成确认、付款或查看门户单据。
国内免费邮箱的常见报错
国内邮箱最常见的问题是发件人不匹配。
典型报错类似:
SMTPSenderRefused: 553 Mail from must equal authorized user
或:
SMTPSenderRefused: 501 mail from address must be same as authorization user
意思是:Odoo声明的发件人和SMTP登录邮箱不是同一个邮箱,邮件服务器拒绝发送。
下面是一个多公司和国内邮箱环境下的示例配置。

用户邮箱和声明发件人不一致时,国内邮箱服务商可能会拒绝发送。

常见处理方向:
| 处理方式 | 适合场景 |
|---|---|
| 使用固定公司邮箱作为统一发件人 | 第一阶段快速上线 |
| 让From和SMTP认证用户保持一致 | 腾讯企业邮、网易企业邮等严格场景 |
| 为不同公司配置不同发件服务器 | 多公司、多域名业务 |
| 使用OAuth认证 | Outlook、Gmail等云邮箱 |
| 调整catch-all和bounce策略 | 客户回复需要进入Odoo |
| 使用本地化邮件模块 | 原生配置无法满足国内限制时 |
第一种方式最简单,但无法满足“每个销售用自己邮箱对外沟通”的场景。后几种方式更灵活,但配置和维护成本更高。
腾讯企业邮配置
腾讯企业邮在国内项目中很常见,但经常遇到“发件人必须等于认证用户”的限制。
常用服务器参数:
POP3/SMTP协议
接收邮件服务器:pop.exmail.qq.com,SSL,端口995
发送邮件服务器:smtp.exmail.qq.com,SSL,端口465
IMAP协议
接收邮件服务器:imap.exmail.qq.com,SSL,端口993
发送邮件服务器:smtp.exmail.qq.com,SSL,端口465
配置前要确认:
- 邮箱账号已启用POP/IMAP/SMTP;
- 使用的是授权码或正确密码;
- 企业微信/腾讯企业邮后台没有限制第三方客户端;
- Odoo发件人和SMTP认证用户是否一致;
- 当前服务器网络可以连接腾讯企业邮服务器。
腾讯企业邮后台配置示例:

常见报错:
SMTPSenderRefused: 501 mail from address must be same as authorization user
如果企业要求多个用户通过同一个腾讯企业邮发信,就需要调整发件策略,或使用支持严格发件人匹配处理的模块。
Office365/Outlook OAuth配置
Office365和Outlook逐步收紧了基本身份验证。很多情况下,不能再简单用邮箱密码配置SMTP/IMAP,而需要使用OAuth新式认证。
配置前提:
- Odoo需要能通过HTTPS访问;
- 回调地址需要和Odoo的base URL一致;
- Microsoft Entra ID中需要创建应用;
- 用户或组织需要允许对应权限;
- SMTP Auth可能需要单独开启。
注册应用
进入Microsoft Azure/Entra管理后台,创建应用注册。

应用类型通常选择Web,回调地址填写:
https://你的Odoo域名/microsoft_outlook/confirm
如果使用本地测试环境,部分OAuth场景只允许HTTPS或http://localhost,普通HTTP域名可能无法通过。
应用注册页面示例:

设置API权限
在应用的API权限中,按Odoo的Outlook集成要求添加邮件相关权限。


最终权限界面示例:

常见权限包括:
- 读取用户基本资料;
- 发送邮件;
- 读取邮件;
- 离线访问令牌。
具体权限会随Odoo版本和Microsoft策略变化,配置时以当前Odoo界面提示和Microsoft后台为准。
还需要确认用户或用户组可以使用该应用。



创建凭据
Odoo需要两个关键参数:
- Client ID;
- Client Secret。
Client ID可以在应用概览页面获取。Client Secret需要在证书和密码中生成。生成后要立即保存,后续可能无法再次查看明文。
Client ID位置示例:

Client Secret生成入口:

在Odoo中连接Outlook账号
回到Odoo,填写Client ID和Client Secret,然后创建或编辑邮箱服务器。

服务器类型选择Outlook OAuth认证,点击连接Outlook账号,跳转到Microsoft登录页面完成授权。

完成授权后,邮箱服务器会显示令牌有效状态。

授权成功后,回到Odoo测试连接。
Office365常见问题
SmtpClientAuthentication is disabled for the tenant
这通常表示租户或用户没有启用Authenticated SMTP。

处理方向:
- 进入Microsoft 365管理中心;
- 找到目标用户;
- 编辑邮件应用设置;
- 勾选Authenticated SMTP;
- 等待策略生效后重新测试。
Microsoft 365管理中心示例:

Email App中开启Authenticated SMTP:

Redirect URI不匹配
检查:
- Odoo的Web Base URL;
- Microsoft应用中的重定向URI;
- 是否使用HTTPS;
- 域名后是否多了斜杠或路径不一致。
Gmail OAuth配置
Gmail也常使用OAuth认证,不建议直接使用普通密码。
在Odoo设置中启用Gmail后,系统会要求填写ID和密钥。

配置大致步骤:
- 打开Google Cloud Console;
- 创建项目;
- 配置OAuth同意屏幕;
- 创建Web应用OAuth凭据;
- 设置授权重定向URI;
- 将Client ID和Client Secret填入Odoo;
- 创建Gmail发件服务器;
- 点击连接Gmail账号完成授权。
重定向URI通常类似:
https://你的Odoo域名/google_gmail/confirm
Google Cloud Console中新建项目示例:

OAuth同意屏幕示例:

创建OAuth凭据:

填写授权重定向URI:

在Odoo中创建Gmail发件箱:

点击连接Gmail账号完成认证:

认证成功后的状态示例:

常见问题:
| 问题 | 处理方向 |
|---|---|
| Redirect URI mismatch | 检查Google后台回调地址和Odoo的base URL |
| 认证后500错误 | 检查网络、域名、证书和OAuth配置 |
| 测试用户无法授权 | 检查OAuth同意屏幕测试用户列表 |
| 发信失败 | 检查Gmail API、授权范围和邮箱服务器配置 |
Gmail在国内网络环境中可能不稳定,国内客户使用前要充分测试。
欧姆网络邮箱解决方案
当项目进入多公司、多域名、多销售邮箱或国内严格邮箱服务商场景时,原生配置有时会不够顺。例如:
- A公司下使用
sales@companya.com; - B公司下使用
sales@companyb.com; - 客户回复要进入对应公司或对应单据;
- 发件箱需要按公司、域名、用户进行匹配;
- 邮箱服务商要求From必须等于SMTP认证用户;
- 客户环境不支持catch-all。
这些问题不是Odoo不会发邮件,而是原生邮件机制和国内邮箱规则之间存在落地缝隙。为了解决这些实施痛点,可以使用青岛欧姆网络科技的邮箱配置解决方案作为增强。
模块入口:
模块示例:

安装后,可以在通用设置中看到和catch-all、严格发件人匹配相关的配置项。

配置后再次发送邮件,可以解决部分国内邮箱严格发件人匹配导致的失败问题。

客户收到邮件示例:

典型能力:
- 发件箱支持公司维度配置;
- 发件箱可以匹配对应收件箱;
- 支持限制发件人和认证邮箱一致;
- 支持不使用catch-all的国内邮箱环境;
- 支持用户在多公司下配置优先邮箱;
- 适合外贸、多公司、多邮箱销售团队。
发件箱公司匹配
在多公司环境中,可以为发件箱指定适用公司。留空表示所有公司可用。

这样可以避免A公司业务误用B公司邮箱发信。
Catch-all匹配
发件箱可以关联对应收件箱。配置后,由该发件箱发出的邮件,可以声明对应的回复地址。

例如:
发件箱:service@odoomommy.com
回复邮箱:catchall@odoohub.com.cn
客户回复时,会回复到指定的catch-all或收件邮箱,再由系统处理。
用户多公司优先邮箱
如果员工在不同公司下使用不同邮箱,可以在用户上配置多公司优先邮箱。

例如:
| 公司 | 用户邮箱 |
|---|---|
| A公司 | a@companya.com |
| B公司 | a@companyb.com |
系统发送邮件时,可以根据当前公司优先使用对应邮箱。
注意:邮箱后缀需要能匹配到对应发件箱域名,否则仍可能发送失败。
实施建议
邮箱配置不要一上来就追求最复杂。更稳的方式是按阶段推进:
| 阶段 | 建议 |
|---|---|
| 第一阶段 | 统一发件邮箱,确保报价、发票、密码重置、门户邀请能正常发送 |
| 第二阶段 | 配置收件或统一回复邮箱,让客户回复有地方沉淀 |
| 第三阶段 | 根据销售团队和多公司需求,再启用个人邮箱、多公司邮箱或OAuth |
| 第四阶段 | 如果国内邮箱规则限制明显,再引入欧姆邮箱方案或定制策略 |
对大多数自主实施客户来说,第一阶段先把“能稳定发出去、客户能收到、不进垃圾箱、模板内容正确”做好,就已经能支撑销售和财务主流程。等团队真正开始依赖Odoo消息区,再逐步完善客户回复留痕和多邮箱规则。
本章我们把Odoo邮件配置从原生链路、发件收件、catch-all、国内邮箱限制、OAuth认证和欧姆邮箱增强方案串了一遍。下一章会继续讲“消息与讨论”,也就是业务单据右侧的消息区如何记录沟通、安排活动、管理关注者,并和本章的邮件配置一起形成完整的协同闭环。