You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS中Nodemailer通过个人Gmail无付费GSuite的稳定发信方案咨询

个人Gmail接Nodemailer稳定发信的可落地方案

你目前遇到的7天refresh token失效,完全是Google OAuth同意屏「测试发布」状态的规则限制,不是个人Gmail本身不支持长期稳定调用,也不是必须付费购买Google Workspace才能解决,有两个完全免费、适合个人自用的落地路径:

方案一:零改动修复现有OAuth流程,让refresh token永久有效

  • 操作方法:直接进入对应Google Cloud项目的OAuth同意屏配置页,把发布状态从「测试」切换到「生产」模式。
  • 常见误区澄清:
    • 这个切换流程不需要提交应用审核、不需要付费、不需要填写复杂的合规材料,原有的外部用户类型设置完全保留。
    • 切换完成后你作为唯一的应用使用者,重新走OAuth授权流程时,只会看到Google弹出的「应用未验证」提示,只需要点击提示页的「高级」展开选项,选择继续前往应用完成授权即可,没有额外门槛。
    • 授权完成后新生成的refresh token不再受测试状态下的7天有效期限制,属于长期有效令牌,完全不需要每7天手动更新。
  • 补充说明:即使切到生产状态,单Google账号对单个OAuth客户端的50个refresh token上限规则依然存在,但个人自用场景下根本不会产生这么多令牌,完全不会触及上限。

方案二:抛弃OAuth流程,用零维护成本的SMTP方案实现个人Gmail发信

这是个人自用场景下维护成本最低的方案,完全不需要维护复杂的OAuth令牌逻辑:

  • 前置准备:给你的个人Gmail账号开启两步验证功能。
  • 操作步骤:在Google账号的安全设置页面,找到「应用专用密码」入口,生成一个专门给NodeJS程序使用的16位随机密码。
  • 直接用以下代码替换原有的Nodemailer传输配置逻辑:
const nm = require('nodemailer');

api.createTransporter = () => nm.createTransport({
  host: 'smtp.gmail.com',
  port: 465,
  secure: true,
  auth: {
    user: process.env.EMAIL, // 填写你的完整Gmail地址
    pass: process.env.GMAIL_APP_PASSWORD // 填入生成的16位应用专用密码,不需要输入原Gmail登录密码
  }
});
  • 方案优势:
    • 只要你不主动在Google账号里删除这个应用专用密码、不重置Gmail登录密码,这个密码永久有效,没有任何过期周期。
    • 配置逻辑比OAuth方案简化90%,不需要手写任何accessToken刷新的异步逻辑,Nodemailer内部会自动处理SMTP连接的所有细节。

常见认知误区澄清

  • 你之前猜测的API密钥发信路径完全不可行:Gmail的API密钥仅支持无身份的公开只读接口调用,没有任何以你的身份发送邮件的权限,根本不能用于邮件发送场景。
  • 不需要为了这个场景特意购买Google Workspace:以上两个方案全程免费,完全覆盖个人Express站点联系表单的发信需求,付费方案提供的企业级能力你根本用不上。

内容的提问来源于stack exchange,提问作者leisheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 13:54:05