【问题标题】:Sending mail using gmail api from nodejs server从nodejs服务器使用gmail api发送邮件
【发布时间】:2017-08-11 09:04:30
【问题描述】:

我想要做的是从我的节点 js rest api 向用户发送一封邮件,一个用户的密码。我想知道如何仅使用 gmail api 和 api 密钥发送电子邮件。

【问题讨论】:

  • Google 有一个API reference for gmail,甚至还有一个关于如何在 node.js 中使用它的部分。你读过吗?你试过什么代码?你在哪里卡住了。我们不只是为那些没有表明他们甚至没有尝试过或描述过他们卡在哪里以及遇到什么问题的人编写代码。
  • 我曾尝试过该代码,但该代码使用 0auth id 通过提供代码中的 url 来强制进行身份验证,我想要做的是只发送电子邮件而不验证 url,而只是使用我的 api 密钥已在项目 google 控制台中创建。
  • 我认为您必须进行身份验证。您不能只使用 API 密钥。 API 密钥可识别您的 API 使用情况,但不会对您的帐户进行身份验证。
  • Google 在 2015 年停止了所有 API 的客户端登录(登录名和密码),您将不得不通过 SMTP 服务器。
  • @DaImTo 这些额外的 redundant 标签应该有什么好处? google-api gmail-api google-oauth2 google-client-login 再多也不过分。它对任何人都没有帮助(但也许你,作为一个标签猎人)请阅读 stackoverflow.com/help/tagging

标签: node.js google-api gmail-api google-client-login


【解决方案1】:

Google 于 2015 年停止使用其所有 API 进行客户端登录(登录名和密码)。您无法使用登录名和密码访问 Google API。您的用户需要使用 Oauth2 进行身份验证。

API 密钥仅用于访问公共数据。 Gmail 是私人用户数据,需要您拥有访问权限才能访问这些数据。

如果您必须使用登录名和密码,那么我建议您尝试使用SMTP or IMAP 服务器。我不是节点开发人员,抱歉,我无法为您提供帮助。

【讨论】:

    【解决方案2】:

    如果您想要使用 Gmail API 发送电子邮件而无需身份验证,则必须使用服务帐户并使用 jwt 进行身份验证。

    示例代码:

    const google = require('googleapis');
    const gmail = google.gmail('v1');
    
    const key = require('./mailing-bd0ff2b11546.json')//service acount jwt auth
    
        let jwtClient = new google.auth.JWT(
            key.client_email,
            null,
            key.private_key,
            ['https://mail.google.com/'],
            '<mail to suplant>'
        );
        function getMessagesList(data) {
            return new Promise((resolve, reject) => {
    
    
                jwtClient.authorize(function (err, tokens) {
                    if (err) {
                        console.error(err);
                    } else {
                        gmail.users.messages.list({
                            auth: jwtClient,
                            userId: 'me',
                            labelIds: 'INBOX'
                        }, (err, messageList) => {
    
                       ...
                       ...
                       ...
    

    这里有一些文档链接:Creating a service account

    stackoverflow example

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 2016-09-07
      • 1970-01-01
      • 2019-09-29
      • 2021-03-15
      • 2020-09-30
      • 2020-10-25
      • 2013-06-16
      • 2011-10-25
      相关资源
      最近更新 更多