【问题标题】:How to send emails with Gmail REST API如何使用 Gmail REST API 发送电子邮件
【发布时间】:2021-01-24 03:02:30
【问题描述】:

我需要通过简单的 REST 调用从我的服务器发送电子邮件,从我的后端服务器电子邮件地址发送到系统中注册的电子邮件地址。

但是有一个问题,请耐心等待。

到目前为止,我看到的很多文档似乎都假设我想访问客户的 gmail 数据,但我没有,我只使用客户的地址作为目的地。

我见过的很多示例都涉及到授权访问 api 的视觉提示。

但是为什么?

他们假设我将通过移动设备进行 apicalls,代表客户行事,这需要视觉提示以获得同意。但这些都不适用于我的用例。

问题是,永远只有一个发件人,“我”(为后端服务器指定的公司电子邮件)。

我应该能够在 google 控制台上创建一个秘密 api_key,并将其发送到我的请求标头中(就像 FIREBASE 那样),或者使用该密钥生成一个令牌,然后我将其发送到 api 端点(如 Paypal确实)。

我希望能够做类似的事情:

POST https://gmail.googleapis.com/upload/gmail/v1/users/{userId}/messages/send

Authorization: key=<key_created_on_google_console_or_token_obtained_using_said_key>

{
  message stuff...
}

google 上的 api 参考说我需要使用 OAuth 凭据创建授权,然后我应该使用它来创建插入为的短期令牌

"Authorization: Bearer <TOKEN>"

在我的下一个 apicalls 中,直到它过期。但是……

在控制台中,创建一个新的 OAuth2.0 客户端 ID,说我需要创建一个应用程序。但我已经有一个项目和一个 api_key(具有 gmail api 的权限)。并且说的应用程序将不得不被发送以供审查!怎么回事?

所以..

如何使用 REST 调用从我自己控制的电子邮件地址发送电子邮件。

都是服务器端,不需要访问任何用户数据(甚至我自己的数据都没有),我已经控制了发件人地址,我已经在google控制台上创建了一个项目,我已经创建了一个api_key。

OAuth 似乎认为我在做一些我没有做的事情,所以我错过了什么?

谢谢。

【问题讨论】:

  • 因为都是服务器端,你在后端使用的是哪种编程语言?

标签: oauth-2.0 google-api google-oauth gmail-api


【解决方案1】:

Bearer 令牌是您在授权应用访问您的 Gmail 帐户后获得的 OAuth2 访问令牌。它是为 3rd 方授权而设计的(就像您的用户允许您的应用访问他们的 Gmail),这就是为什么当您访问自己的帐户时看起来很复杂。

看看这个https://developers.google.com/identity/protocols/oauth2

【讨论】:

    【解决方案2】:

    原来我试图使用错误的工具来解决问题。 在寻找替代品后,我发现了 MailGun 和 SendGrid。 尝试过 SendGrid,它像手套一样合身。喜欢它。

    我使用 Gmail+PHPMailer 来解决这个问题,并认为新的 api 旨在取代它,但事实证明并非如此。

    Alexey 在他的回答中指出了预期用途。实际上,我最终可能会将新的 Gmail api 集成到更符合它在我的客户移动设备上的预期用途。

    这都是我的误解。

    感谢您的宝贵时间。

    【讨论】:

    • SparkPost 对我们来说工作得很好。也检查一下sparkpost.com
    猜你喜欢
    • 2018-02-23
    • 2017-12-19
    • 2018-01-26
    • 2014-08-27
    • 2021-09-11
    • 2015-01-02
    • 2017-04-14
    • 2019-10-16
    • 2014-12-14
    相关资源
    最近更新 更多