使用 Laravel 和 Microsoft Office 365 以安全的方式发送邮件
在不断变化的数字环境中,保护敏感信息变得至关重要。电子邮件通信是最广泛使用的数据交换方法之一,需要一种强大而安全的方法来确保其内容的隐私和完整性。Laravel 是 web 应用开发的热门选择,它要求安全发送电子邮件的最佳实践。这就是 Microsoft Office 365 和 Microsoft Graph API 发挥作用的地方。
本文中,我们将探讨使用 Microsoft Office 365 和 Microsoft Graph API 从 Laravel 应用 发送电子邮件的重要性,而不是不安全和过时的 SMTP 基本身份验证协议。2022 年 10 月 1 日,微软禁用了其所有服务(SMTP 除外)的Basic Auth,并宣布计划逐步淘汰 SMTP。我们将研究采用这种现代方法的安全优势,为您提供知识和信心,以保护您的应用程序的电子邮件通信免受窥探和恶意行为者的攻击。
通过 Microsoft Graph API 使用 Microsoft Office 365 的优势
与使用 SMTP 相比,Graph API 适配器的初始配置稍微复杂一些。然而,使用 Graph API 的优势远远超过了初始设置时间。它将显著提高 Laravel 应用的安全性,当微软禁用 SMTP Basic Auth 时,你不必担心。Graph API 是一个 RESTful API,允许你访问 Microsoft 生态系统数据。我们将在几分钟内向你展示如何将其与 Laravel 应用一起使用。
安装 Laravel Mail Adapter
Laravel Mail Adapter for Microsoft Office 365 允许你通过 Microsoft Graph API 发送邮件:
首先使用 Composer 安装 Laravel Mail Adapter:
composer require innoge/laravel-msgraph-mail
现在在 config/mail.php
中向邮件驱动配置中添加一个新条目:
'microsoft-graph' => [
'transport' => 'microsoft-graph',
'client_id' => env('MICROSOFT_GRAPH_CLIENT_ID'),
'client_secret' => env('MICROSOFT_GRAPH_CLIENT_SECRET'),
'tenant_id' => env('MICROSOFT_GRAPH_TENANT_ID'),
'from' => [
'address' => env('MAIL_FROM_ADDRESS'),
'name' => env('MAIL_FROM_NAME'),
],
],
现在,已经完成了邮件适配器的安装。下一步是配置 Azure 应用注册,并用身份验证数据填充 .env
文件。
创建 Azure 应用注册
第一步是创建 Azure 应用注册。这是一个可以在 Azure 门户中完成的简单过程。你必须使用有权访问 Azure 门户的帐户登录。如果你没有帐户,你可以免费创建一个。
- 跳转到 Azure Portal 并在点击菜单中的 "App Registrations"。
- 点击 "New registration" 按钮。
- 输入应用名并选择 "Accounts in this organizational directory only"
- 点击 "Register" 进行注册
注册表单如下:

设置应用权限
- 跳转到 "API Permissions" 选项卡并点击 "Add a permission"
- 选择 "Microsoft Graph" 和 "Application permissions"
- 选择 "Mail.Send"
- 点击 "Add permissions"
- 然后点击 "Grant admin consent for "

创建客户端密钥
- 跳转到 "Certificates & secrets" 选项卡并点击 "New client secret"
- 输入描述并选择到期时间
- 点击 "Add"
- 复制客户端密钥值并将其保存。稍后会用到。
配置 Laravel 应用
既然已经完成了 Azure 应用注册,现在可以配置你的 Laravel 应用。请在 .env
文件中填写以下变量:
MICROSOFT_GRAPH_CLIENT_ID=
Azure App 注册的应用(客户端) ID
MICROSOFT_GRAPH_TENANT_ID=
Azure Active Directory 的租户 ID(你可以在应用概述页面上找到它)
MICROSOFT_GRAPH_CLIENT_SECRET=
前面创建的客户端密钥
MAIL_FROM_ADDRESS=
发件人邮箱地址
MAIL_FROM_NAME=
发件人名字
小结
希望本文能让你很好地了解用 Microsoft Graph API 代替 SMTP 连接器从 Laravel 应用发送电子邮件的优势。
请注意,如果想使用应用进行批量邮件发送,Microsoft Office 365 可能是错误的选择。微软只允许每分钟发送 30 封电子邮件,即每天发送 10000 封邮件。