【问题标题】:send gmail emails with jwt-google api auth使用 jwt-google api auth 发送 gmail 电子邮件
【发布时间】:2020-09-14 16:14:38
【问题描述】:

我正在尝试使用 nodejs 和 google api auth 和 jwt 发送电子邮件。 我收到以下错误:

      code: 400,
  errors: [
    {
      message: 'Precondition check failed.',
      domain: 'global',
      reason: 'failedPrecondition'
    }

这是我的代码:

    const jwtClient = new google.auth.JWT(
  googleKey.client_email,
  null,
  googleKey.private_key,
  ['https://www.googleapis.com/auth/gmail.send'],
  'email@xxx-cloud.iam.gserviceaccount.com',
)

function sendMessage(auth, from, to, subject, content) {
  // The Gmail API requires url safe Base64
  // (replace '+' with '-', and '/' with '_')
  var encodedEmail = new Buffer(
    'From: ' + from + '\r\n' + 'To: ' + to + '\r\n' + 'Subject: ' + subject + '\r\n\r\n' + content,
  )
    .toString('base64')
    .replace(/\+/g, '-')
    .replace(/\//g, '_')

  var gmail = google.gmail('v1')
  var request = gmail.users.messages.send(
    {
      auth: auth,
      userId: 'email@xxx-cloud.iam.gserviceaccount.com',
      resource: {
        raw: encodedEmail,
      },
    },
  )
}

我尝试了所有方法,但我不断收到此错误。

【问题讨论】:

  • Nodemailer 要容易得多。你试过了吗?
  • 我必须用 google api 来做这个......

标签: node.js google-api


【解决方案1】:

从您的电子邮件中删除 @xxx-cloud.iam.gserviceaccount.com

email@xxx-cloud.iam.gserviceaccount.comemail

【讨论】:

    【解决方案2】:

    对于遇到相同问题的任何人,这是与异步等待相关的问题。只需将所有内容放在一个异步函数中并等待身份验证。

    【讨论】:

      猜你喜欢
      • 2017-04-14
      • 2018-01-26
      • 2014-09-16
      • 2021-09-11
      • 2015-01-02
      • 2019-10-16
      • 2014-10-30
      • 2016-10-27
      • 2017-03-07
      相关资源
      最近更新 更多