使用 Azure OAuth 将 Microsoft Outlook 365 连接至 Odoo
Odoo 兼容 Microsoft 的 Azure OAuth,用于 Microsoft 365。要通过自定义域名安全收发邮件,只需在 Azure 平台和 Odoo 数据库后端完成少量设置。此配置可用于个人邮箱或自定义域名创建的邮箱。
::: seealso
Microsoft Learn: 在 Microsoft 身份平台注册应用
:::
::: seealso
– /applications/general/users/azure –
/applications/productivity/calendar/outlook
:::
在 Microsoft Azure 门户中的设置
创建新应用
首先,访问 Microsoft Azure 门户。使用 Microsoft Outlook Office 365 账户登录(若有),否则使用个人 Microsoft 账户 登录。需要具有 Azure 设置管理权限的用户进行以下配置。随后进入标记为 管理 Microsoft Entra ID(原 Azure Active Directory)的章节。
点击顶部菜单中的 Add (+),选择 App registration。在 注册应用 页面,将 Name 重命名为 [Odoo] 或其他易识别的名称。 在 Supported account types 中选择
任何组织目录中的账户(Any Microsoft Entra ID directory - Multitenant)以及个人 Microsoft 账户(如 Skype、Xbox)。
在 Redirect URL 部分,平台选择 Web,然后在 URL 栏中输入 [https://<web base url>/microsoft_outlook/confirm]。[web.base.url] 会随登录数据库的 URL 而变化。
:::: note
::: title
注意
:::
关于 web.base.url <domain-name/web-base-url> 的文档说明了如何冻结唯一 URL。也可以在 Microsoft 应用中添加多个重定向 URL。
::::
将 URL 填入后,点击 Register 创建应用。
API 权限
接下来需要设置 API permissions。Odoo 需要特定的 API 权限才能在 Microsoft 365 中读取(IMAP)和发送(SMTP)邮件。点击左侧菜单中的 API permissions,再点击 (+ ) Add a Permission,在 Commonly Used Microsoft APIs 下选择 Microsoft Graph,随后选择 Delegated Permissions。
在搜索框中搜索以下 Delegated permissions,并逐一点击 Add permissions:
SMTP.SendIMAP.AccessAsUser.All
:::: note
::: title
注意
:::
默认会添加 User.Read 权限。
::::
{.align-center}
分配用户和组
添加完 API 权限后,返回左侧侧栏顶部的 Application Overview。
在 Essentials 概览表中,点击 Managed Application in Local Directory 链接(表格右下角的最后一个选项)。
{.align-center}
在左侧侧栏选择 Users and Groups,再点击 (+) Add User/Group。根据账户类型,可添加 Group 与 User,或仅添加 User(个人账户只能添加用户)。
在 Users 或 Groups 中点击 None Selected,选择将用于 Odoo 中发送邮件的用户或用户组。点击 Add,随后 Select,最后 Assign 将其分配给该应用。
创建凭证
现在 Azure 应用已完成设置,需要为 Odoo 创建凭证,包括 Client ID 与 Client Secret。
- Client ID(或 Application ID)可在应用的 Overview 页面复制,位于 Essentials 概览的 Display Name 下方。
{.align-center}
- Client Secret Value 需要在左侧侧栏的 Certificates & Secrets 中获取。点击 (+) New Client Secret。
在弹出的右侧窗口中,点击 Add a client secret。在 Description 中填写 [Odoo Fetchmail] 或其他易识别的描述,并设置 expiration date。
:::: important
::: title
重要
:::
若首个密钥过期,需要重新生成新的 Client Secret,否则会导致服务中断。请将到期日期设为可能的最远时间并记录。
::::
填写完毕后点击 Add,系统会生成 Client Secret Value 与 Secret ID。务必在离开页面前将 Value(即 Client Secret Value)复制到记事本,因为离开后会被加密。Secret ID 不必使用。
{.align-center}
完成上述步骤后,以下两项即可在 Odoo 中使用:
- 客户端 ID(Client ID / Application ID)
- 客户端密钥(Value / Client Secret Value)
至此,Microsoft Azure 门户的设置已完成。
在 Odoo 中的设置
输入 Microsoft Outlook 凭证
打开 Odoo 数据库,进入 Apps 模块。去除搜索栏中的 Apps 过滤器,搜索 Outlook,安装名为 Microsoft Outlook 的模块。
随后前往 Settings → General Settings,在 Discuss 部分确保勾选 Custom Email Servers,此时会出现 Outlook Credentials 选项。
点击 Save 保存。
将前面获取的 Client ID(Application ID)和 Client Secret(Client Secret Value)分别粘贴到对应字段,保存设置。
{.align-center}
配置外发邮件服务器
在 General Settings 页面,Custom Email Servers 区域点击 Outgoing Email Servers 链接,配置 Microsoft 账户。
创建新邮件服务器并勾选 Outlook。填写 Name(任意),以及 Microsoft Outlook 邮箱的 Username。
若 From Filter 为空,填写 域名或邮箱地址(如 <email-outbound-unique-address>)。
点击 Connect your Outlook account。
此时会弹出 Microsoft 窗口,完成 授权过程。选择在 Odoo 中配置的相应邮箱地址。
{.align-center}
点击 Yes 允许 Odoo 访问该 Microsoft 账户。页面会返回 Odoo 已配置的 Outgoing Mail Server,系统自动加载 token,并显示绿色的 Outlook Token Valid 标识。
{.align-center}
最后点击 Test Connection,若出现确认信息则说明成功。至此,Odoo 数据库即可通过 OAuth 认证使用 Microsoft Outlook 发送安全邮件。
单一外发邮件服务器配置 {#azure_oauth/notifications}
单一外发服务器是最简配置,无需为数据库中的用户分配大量访问权限。
使用一个通用邮箱向数据库中所有用户发送邮件,例如使用 notifications@example.com 或 contact@example.com 作为别名。该地址必须在服务器的 FROM Filtering 中设置,并且在系统参数中对应 {mail.default.from}@{mail.catchall.domain}。
::: seealso
访问 From Filtering 文档 <email-outbound-different-servers-personalized-from-filtering> 获取更多信息。
:::
:::: note
::: title
注意
:::
系统参数可在 Settings → Technical → Parameters → System Parameters 中通过开启 developer-mode 访问。
::::
使用此配置时,所有发送的邮件都会使用配置的通知邮箱地址,但发送者的名称仍会显示真实姓名,只是邮箱地址会被替换为通知邮箱。
::: example
单一外发邮件服务器配置示例:
- 外发邮件服务器 用户名(登录) =
notifications@example.com - 外发邮件服务器
FROM Filtering=notifications@example.com - 系统参数
mail.catchall.domain=example.com - 系统参数
mail.default.from=notifications
:::
用户专属(多用户)配置
除了通用邮箱外,还可以为数据库中的每个用户单独设置邮件服务器。每个服务器的 FROM Filtering 必须对应该用户的邮箱地址,只有匹配的用户才能使用该服务器。
设置步骤
为每位用户分别创建邮件服务器,并将 FROM Filtering 设置为该用户的邮箱。需要为发送 通知 的通用邮箱建立 fallback server,其 FROM Filtering 应为 {mail.default.from}@{mail.catchall.domain}。
:::: note
::: title
注意
:::
系统参数同样可在 Settings → Technical → Parameters → System Parameters 中通过开启 developer-mode 访问。
::::
::::: important
::: title
重要
:::
此事务性邮件服务器可与外发群发邮件服务器并存。群发邮件服务器的 FROM Filtering 可保持为空,但需在 Email Marketing 应用的设置中配置。
:::
::: seealso
了解如何在群发邮件服务器中设置自定义域名 SMTP 服务器,请访问 email-outbound-custom-domain-smtp-server。
:::
::: example
多用户外发邮件服务器配置示例:
- 用户 #1 邮箱
- 外发邮件服务器 #1 用户名 =
john@example.com - 外发邮件服务器 #1
FROM Filtering=john@example.com
- 外发邮件服务器 #1 用户名 =
- 用户 #2 邮箱
- 外发邮件服务器 #2 用户名 =
jane@example.com - 外发邮件服务器 #2
FROM Filtering=jane@example.com
- 外发邮件服务器 #2 用户名 =
- 通知邮箱
- 外发邮件服务器 #3 用户名 =
notifications@example.com - 外发邮件服务器 #3
FROM Filtering=notifications@example.com
- 外发邮件服务器 #3 用户名 =
- 系统参数
mail.catchall.domain=example.commail.default.from=notifications
:::
配置收件邮件服务器
收件账户的配置方式与外发类似。进入 Technical → Incoming Mail Servers,点击 Create 新建配置。勾选 Outlook OAuth Authentication,填写 Microsoft Outlook 用户名,点击 Connect your Outlook account。Odoo 会显示 Outlook Token Valid。随后 Test and Confirm,即可开始接收邮件到 Odoo 数据库。