这是使用 Cloudflare Workers 实施 Gmail 发送系列的第 1 部分:
- 第 1 部分:设置(当前)
- 第 2 部分:开发环境(即将推出)
- 第 3 部分:实施(即将推出)
介绍
在 Cloudflare Pages 托管的静态网站上实施联系表单时,电子邮件发送功能需要无服务器解决方案。本指南演示了如何使用 Cloudflare Workers 设置 Gmail API 来处理表单提交。
Cloudflare Workers 限制
使用 Cloudflare Workers 时,需要考虑两个主要限制:
-
Google API 包不可用:
-
Nodemailer 软件包不可用:
- Nodemailer 依赖 Node.js 环境
- 不能在 Cloudflare Workers 中使用
设置过程
1. 创建服务帐号
- 访问 Google Cloud console
- 创建一个新项目或选择现有项目
- 导航到“IAM 和管理” > “服务帐户”
- 点击“创建服务帐户”
- 输入服务帐户名称和描述
- 跳过可选设置并单击“完成”
- 记下 OAuth2 客户端 ID 供以后使用
2. 分配所需的角色
- 导航到“IAM 和管理” >“IAM”
- 选择相关主体
- 点击“授予访问权限”
- 将服务帐户添加为新主体
- 分配以下角色:
- 服务帐户管理员
- 服务帐户密钥管理员
- 服务帐户令牌创建者
- IAP 政策管理员
- 保存更改
3.启用Gmail API
- 导航至“API 和服务”>“库”
- 搜索“gmail”
- 选择“Gmail API”
- 点击“启用”
4. 添加组织策略管理员角色
- 导航到“IAM 和管理” >“IAM”
- 编辑组织管理员
- 添加“组织政策管理员”角色
- 保存更改
5.禁用服务帐户密钥创建策略
- 导航至“IAM 和管理” > “组织政策”
- 过滤“iam.disableServiceAccountKeyCreation”
- 点击政策链接
- 点击“管理政策”
- 选择“覆盖家长政策”
- 添加规则并设置为“强制”
- 点击“完成”
6. 生成服务帐户密钥
7. 配置域范围委派
- 访问 Google Workspace 管理控制台
- 导航至安全 > 访问和数据控制 > API 控件
- 点击“管理域范围委托”
- 添加新的客户端 ID:
- 输入服务帐户的客户端 ID
- 添加范围:https://www.googleapis.com/auth/gmail.send
- 点击“授权”
注意:由于安全隐患,应在较大的组织中仔细考虑域范围的委派。
附加配置
使用 Gmail 别名发送电子邮件时,请记得添加别名地址:
- 转到 Gmail 设置 > 帐户
- 通过“添加其他电子邮件地址”添加别名电子邮件地址
关于免费电子邮件服务的重要说明
此前,MailChannels Send API 被广泛推荐为 Cloudflare Workers 的免费电子邮件发送解决方案。但是,自 2024 年 6 月 30 日起,MailChannels 和 Cloudflare 之间的集成已停止。这影响了许多依赖此服务来满足电子邮件发送需求的开发人员。
许多 AI 语言模型仍然建议使用 MailChannels 作为解决方案,因为它们的训练数据早于该服务终止。这种情况凸显了验证当前服务可用性的重要性,尤其是在使用第三方集成时。
本指南中描述的 Gmail API 实现是一个可靠的替代方案,尽管与之前的 MailChannels 解决方案相比,它需要更多的初始设置。
下一步
本系列的下一篇文章将介绍将 Gmail API 与 Cloudflare Workers 结合使用的开发环境设置和实现细节。