【问题标题】:Nodemailer OAuth2 2LO fails in Heroku deploymentNodemailer OAuth2 2LO 在 Heroku 部署中失败
【发布时间】:2020-12-16 19:34:32
【问题描述】:
const { 
    EMAIL_FROM,
    EMAILS_TO,
    USER,
    GMAIL_CLIENT_ID,
    GMAIL_PRIVATE_KEY
} = process.env;
let transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 465,
    secure: true,
    auth: {
        type: 'OAuth2',
        user: USER,
        serviceClient: GMAIL_CLIENT_ID,
        privateKey: GMAIL_PRIVATE_KEY,
    }
}); 

此代码在本地环境中可以正常发送电子邮件。

我部署到 heroku,但出现错误:Error: Can't generate token. Check your auth options

据我所知,heroku 配置变量正确通过。

Google 是否会对 Heroku 服务器设置某种 IP 限制?我在这里遗漏了什么吗?

这是一个带有 Google 服务帐号的 gSuite 帐号。

谢谢

【问题讨论】:

    标签: javascript node.js heroku oauth-2.0 nodemailer


    【解决方案1】:

    好的。想通了,但把这个问题留在这里,以防有人犯这个愚蠢的错误。

    不是 Heroku 问题。这是一个 .env 问题。

    显然,当作为 env 变量传递时,私钥会中断。可能与换行有关...

    Reagrdless,对我有用的解决方案:

    1. 使用 .env 文件时,使用双引号:"-----BEGIN RSA PRIVATE KEY-----..."
    2. 对于heroku 配置变量,这似乎不起作用。所以我把它包装在一个 JSON 字符串中。 {"key": "-----BEGIN RSA PRIVATE KEY-----...."} 然后在应用程序中,JSON.parse(process.env.PRIVATE_KEY).key

    如果这对某人有任何帮助,非常欢迎您!

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 2021-07-19
      • 2019-11-04
      • 2016-02-21
      • 2014-11-07
      • 1970-01-01
      相关资源
      最近更新 更多