我们在公司中为每位员工和 3 个部门(服务、支持和报告)使用电子邮件地址 - 例如
<employee_name>@<company_name>.de
或 support@<company_name>.de
(“<..._name>”只是此处发帖的占位符)。我们的程序使用 PHPMailer 通过 SMTP 从 3 个部门发送电子邮件(主机:smtp.office365.com
),这意味着 PHPMailer 是由 Microsoft 任务计划程序在没有我们 Microsoft 用户的计算机上启动的程序/脚本调用的已登录。现在我们要从基本 SMTP 身份验证切换到 Oauth2。因此,我们在 azure 门户的主租户 (<boss_name>@<company_name>.de
) 中注册了一个 Web 应用程序“PHPMailer”。
要获取刷新令牌,我必须在浏览器中打开文件
get_oauth_token.php
,该文件包含在 PHPMailer 中。在该文件中,Microsoft 的范围是 ['wl.imap', 'wl.offline_access']
。不幸的是,我找不到该信息,如果这只是默认范围或示例范围,并且我必须根据我的需要(SMTP)更改它,或者它必须始终与我需要令牌的范围无关。此外,我无法了解如何命名该文件中的范围(例如 offline_access
与 wl.offline_access
)以及 wl.
的含义。
在天蓝色门户中,我们设置了应用程序权限
Mail.Send
和User.Read
。最后一张已经在那里了。
在过去的几周里,我阅读了无数来自 Microsoft、PHPMailer 和其他公司以及 stackoverflow 等论坛的教程。但我找不到必要的信息。
使用 OAuth 验证 IMAP、POP 或 SMTP 连接
如何设置多功能设备或应用程序以使用 Microsoft 365 或 Office 365 发送电子邮件
将 Gmail 与 XOAUTH2 结合使用(遗憾的是 Microsoft 没有解释)
PHP League 的 OAuth 2.0 客户端Microsoft OAuth 2.0 客户端提供程序 Microsoft OAuth 2.0 对 Steven Maguire 的 PHPMailer 的支持
get_oauth_token.php
?(如果您需要更多信息,请告诉我...)
Microsoft Azure 和 XOAUTH2 设置指南
不幸的是,它对我的应用程序权限没有帮助,因为它是针对 Microsoft 用户登录到 PHPMailer 正在工作的计算机上的情况而设计的。
只要您拥有登录凭据,在哪里运行以下步骤来获取所有必要的信息并不重要。据我所知,你们公司没有白名单。
下面将澄清一些事情和设置。最重要的一步是拥有一个与您的 url 相匹配的重定向 URL,例如 http://localhost/get_oauth_token.php,只要它与 Azure 中的相同,您叫它什么并不重要。最佳实践是使用域。获得令牌后,您在哪里运行邮件就不再重要了。
1.作曲家需要 greew/oauth2-azure-provider
3. get_oauth_token.php 保存并运行它。提供教程中的 ClientId、ClientSecret、TenantID。使用您租户中的电子邮件地址登录。它将重定向到微软的登录页面,输入您的电子邮件地址和密码。它将创建一个令牌。复制粘贴令牌。
4. 测试邮件 保存。输入电子邮件、ClientId、ClientSecret、TenantID 和令牌。
将 addAddress 更改为您想要的内容。 如果一切顺利,它将向您发送一封测试电子邮件。要记住一件事。对于租户中的每个电子邮件地址,您需要运行 get_oauth_token.php 并使用特定的电子邮件地址登录以获取令牌。每个电子邮件地址都有一个独特的令牌!还要记住,有一个由您自己设置的关键超时。所以不要让有效期太短。如果过期,则需要使用 get_oauth_token.php 重新开始。