为什么你的Gmail在n8n里总是配置失败?
作为 N8N大学 的主编,笔者见过太多新手在配置 Email 节点时,对着 Gmail 一脸茫然,最后只得到一句冷冰冰的 "Authentication failed"(认证失败)。
说实话,Gmail 的安全性一直在升级,直接用 "邮箱+密码" 的方式在 n8n 里发送邮件已经成为历史。如果你还在用旧教程,大概率是在做无用功。
今天这篇教程,我不讲废话,只讲怎么通过 Google OAuth 2.0 安全地把 Gmail 接入 n8n,以及我踩过的那些坑。
核心实操:三步搞定 Google OAuth 认证
配置 Gmail 的核心在于获取 Google 的 "通行证",也就是 OAuth 凭证。别怕,这不需要写代码,只需要在 Google Cloud Console 里点几下。
第一步:创建 Google Cloud 项目并启用 API
首先,你需要一个 Google 账号。访问 Google Cloud Console,创建一个新项目(Project)。
进入项目后,务必在左侧菜单找到 "API 和服务" -> "库",搜索并启用 Gmail API。这一步如果漏了,后续配置全是徒劳。
第二步:配置 OAuth 同意屏幕(最容易踩坑的地方)
这是最关键的一步。在 "API 和服务" -> "OAuth 同意屏幕" 中,选择 外部 (External) 类型(除非你有企业版且想限制内部使用)。
在这里,你需要填写应用名称(如 n8n-email)、用户支持邮箱和开发者联系信息。**重点来了**:在 "测试用户" 列表中,必须添加你自己的 Gmail 地址。否则,当你尝试在 n8n 中登录时,Google 会报错 "This app hasn't been verified"。
第三步:生成 OAuth 2.0 凭证
在 "凭据" 页面,点击 "创建凭据" -> "OAuth 客户端 ID"。
- 应用类型选择:**Web 应用**。
- 重定向 URI:这里需要填写 n8n 提供的回调地址。通常格式是
http(s)://你的n8n域名/rest/oauth2-credential/callback。
创建成功后,你会得到一个 客户端 ID (Client ID) 和 客户端密钥 (Client Secret)。复制它们,准备填入 n8n。
n8n 中的配置与节点设置
回到 n8n 的界面,我们开始配置节点。
配置 n8n 的 Credentials
在 n8n 中,点击 Credentials -> Add Credential,选择 Email (IMAP) 或 Email (SMTP)(取决于你是收邮件还是发邮件,这里以发邮件 SMTP 为例)。
关键参数如下:
- Host:
smtp.gmail.com - Port:
465(SSL) 或587(TLS) - User: 你的完整 Gmail 地址
- Password: 留空!不要填密码!
- Protocol: 选择 OAuth2
此时,你会看到 OAuth2 相关的输入框。把刚才在 Google Cloud 获取的 Client ID 和 Client Secret 填进去,点击 "连接"。浏览器会跳转 Google 授权,同意后即配置成功。
我踩过的那些坑(避坑指南)
配置过程看似简单,但魔鬼藏在细节里。以下是我和 N8N大学 社区成员总结的血泪教训。
坑一:Scopes(权限范围)不足
Google 对权限控制很严。在配置 Credentials 时,n8n 默认申请的 Scope 可能只有 https://www.googleapis.com/auth/userinfo.email。
这会导致你虽然连接成功,但发送邮件时报错 403 Forbidden 或 Insufficient Permission。
解决方案: 在 n8n 的 Credentials 设置里,找到 "Scope" 选项,手动添加 https://www.googleapis.com/auth/gmail.send。如果找不到手动输入的地方,可能需要通过 n8n 的环境变量强制配置 scopes。
坑二:Google "未验证应用" 警告
当你在 n8n 点击 "连接",跳转到 Google 授权页面时,浏览器可能会拦截你,显示红色的 "未验证应用" 警告。
原因分析: 你的 OAuth 项目处于测试阶段,且没有把当前使用的 Google 账号添加到 "测试用户" 中。
解决方案: 回到 Google Cloud Console 的 OAuth 同意屏幕,在 "测试用户" 里添加你的账号。或者,更彻底的做法是:在 Google Cloud 上通过 "生产" 阶段的审核(虽然对于个人测试项目,添加测试用户通常足够了)。
坑三:Gmail 的 "不安全应用访问" 限制
如果你尝试使用 "用户名/密码" 模式(即非 OAuth 方式),Google 会在 2024 年及以后完全封锁。即便你开启了 "允许低安全性应用访问",在 n8n 中配置 SMTP 时依然可能失败。
笔者建议: 彻底放弃密码登录模式,老老实实走 OAuth2。虽然步骤多,但这是目前唯一稳定且安全的方案。OAuth Token 会自动刷新,你不需要每隔几个月去更新密码。
坑四:发送速率限制
即使是 OAuth 认证,Gmail 也有发送限制。普通 Gmail 账户每天最多发送约 500 封邮件,付费的 Google Workspace 账户限制稍高。
如果你的 n8n 工作流需要群发邮件,务必做好队列处理,或者考虑使用专业的邮件发送服务(如 SendGrid、Mailgun)通过 SMTP 接入,而不是直接用 Gmail。
FAQ 常见问题解答
Q1: 为什么配置好后测试发送,n8n 提示 "Invalid login"?
A: 这通常是因为你在 Credentials 中填了 Password。使用 OAuth2 时,"Password" 字段必须为空。如果使用 OAuth2 还报错,请检查是否成功授权,或者尝试重新创建 Credentials。
Q2: 我可以使用企业版 Gmail (Google Workspace) 吗?
A: 完全可以,且流程几乎一致。唯一的区别是,你的 Google Cloud 项目可能需要关联企业账号。如果遇到权限问题,请联系你的 Google Workspace 管理员,确保没有禁用第三方应用的登录权限。
Q3: n8n 在 Docker 中运行,配置 OAuth 时回调地址怎么填?
A: 如果你使用 Docker 部署 n8n,端口映射至关重要。假设你将 n8n 的 5678 端口映射到了宿主机的 5678,且域名指向宿主机 IP,那么回调地址就是 http://域名:5678/rest/oauth2-credential/callback。确保 Google Cloud 上的重定向 URI 与 n8n 设置完全一致(包括 http/https 和端口)。
总结与资源
配置 n8n 的 Gmail 节点并不难,难的是绕过 Google 那些繁琐的安全机制。记住核心两点:必须使用 OAuth2 和 正确配置 Google Cloud 的 Scope 和测试用户。
只要避开上述的四个坑,你的 n8n 自动化流程就能顺畅地收发 Gmail 邮件了。
如果你在配置过程中遇到其他报错,欢迎在 N8N大学 的社区留言,我会亲自为你解答。