使用 OAuth2 和 nodemailer 从我的 gmail 帐户发送电子邮件

send emails from MY gmail account with OAuth2 and nodemailer

我想通过我自己的服务器从我的 gmail 地址发送电子邮件。我正在使用 nodemailer 并且使用帐户凭据是不稳定的,并且经常不起作用并导致此 thread

我已经在那个线程上实现了很多次,但它仍然不稳定,而且我也知道 OAuth2 is the way to go

我在 google developer console 中有一个带有 cliendID 和 clientSecret 的项目,如您所见:

但是我如何在没有任何浏览器交互的情况下获得访问令牌?

我似乎在这里遗漏了一些微不足道的东西......

我已经浏览了我能找到的关于 OAuth2、令牌和 API 的所有 google 教程和文档,但所有指南都在一点上通过浏览器。

转到 OAuth Playground,单击右上角的齿轮,选中 Use your own OAuth credentials 并插入 clientIDclientSecret

然后 select 您在左侧列表中想要的 Gmail API v1 范围并按照概述的步骤进行操作,您将获得 access_tokenrefresh_token

Google Oauth2 事实上,我所知道的所有 Oauth2 实现都要求用户通过 Web 浏览器授予应用程序访问权限。

还有一种称为服务帐户的替代类型,这更像是预授权的 oauth1 service accounts。您可以像与任何其他用户一样,通过与服务帐户共享文件夹和文件来授予服务帐户对 google 驱动器的访问权限。因为它们是预授权的,所以没有浏览器 window 弹出服务帐户。

如果您有 Google 个域帐户 Gsuite,则只能使用 Gmail 用户服务帐户。管理员可以进入并授予服务帐户访问相关 Gmail 帐户的权限。 Perform G Suite Domain-Wide Delegation of Authority

如果这是普通用户 Gmail 帐户,则不能使用服务帐户。您将必须使用 Oauth2 弹出请求并保存刷新令牌,以便您以后可以访问。