GSuite错误:无法为用户创建新的访问令牌-OAuth2 Nodemailer

问题描述

我正在尝试通过Gmail从Node.js发送电子邮件,但我一直遇到此错误

Error: Can't create new access token for user
  at XOAuth2.generatetoken(c: \apps\node\myapp\node_modules\nodemailer\lib\xoauth2\index.js: 184: 33)
  at XOAuth2.getToken(c: \apps\node\myapp\node_modules\nodemailer\lib\xoauth2\index.js: 123: 18)
  at SMTPConnection._handleXOauth2Token(c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - connection\index.js: 1697: 27)
  at SMTPConnection.login(c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - connection\index.js: 540: 22)
  at c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - transport\index.js: 374: 32
  at SMTPConnection.<anonymous>(c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - connection\index.js: 215: 17)
  at Object.onceWrapper(events.js: 420: 28)
  at SMTPConnection.emit(events.js: 314: 20)
  at SMTPConnection._actionEHLO(c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - connection\index.js: 1313: 14)
  at SMTPConnection._processResponse(c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - connection\index.js: 942: 20)
  at SMTPConnection._onData(c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - connection\index.js: 749: 14)
  at TLSSocket.SMTPConnection._onSocketData(c: \apps\node\myapp\node_modules\nodemailer\lib\smtp - connection\index.js: 195: 44)
  at TLSSocket.emit(events.js: 314: 20)
  at addChunk(_stream_readable.js: 304: 12)
  at readableAddChunk(_stream_readable.js: 280: 9)
  at TLSSocket.Readable.push(_stream_readable.js: 219: 10) {
  code: 'EAUTH',command: 'AUTH XOAUTH2'
}

我已经设置了G Suite帐户,创建了服务帐户并为该项目启用了Gmail API。我还为服务帐户启用了G-Suite域范围内的委派,并在我的G Suite帐户中添加了客户端ID和适当的范围。

我下载了凭据文件,并将其重命名为使用.js,以便可以将其导入为ES模块。

import nodemailer from "nodemailer";
import * as key from "../credentials.js";

const SENDER_EMAIL = "[email protected]";
const RECEIVER_EMAIL = "[email protected]";

async function start() {
  const transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",port: 465,secure: true,auth: {
      type: "OAuth2",user: SENDER_EMAIL,serviceClient: key.client_id,privateKey: key.private_key,},});

  try {
    await transporter.verify();
    await transporter.sendMail({
      from: SENDER_EMAIL,to: RECEIVER_EMAIL,subject: "Hello Humans",text: "The quick brown fox jumps over the lazy dog.",});
  } catch (err) {
    console.error(err);
  }
}

export default start;

现在,通过上述消息调用start()错误。我不知道。帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)