API 密钥不以“SG”开头。发送网格

Cor*_*man 8 javascript email heroku node.js sendgrid

我正在尝试在 Heroku NodeJS 应用程序中设置 SendGrid 插件。我创建了 API 密钥并将其设置为环境变量。

整个 API 密钥类似于:SG.actualValue.bbb_cccccc

我做的第一个设置我将整个密钥设置为我的 SENDGRID_API_KEY 并且我收到了这个错误:

API 密钥不以 SG 开头。

因此,我意识到错误并取消设置环境变量并将其重新设置为整个键的 actualValue 部分。

但是,我仍然遇到相同的错误。我尝试再次做同样的事情或重新启动终端(实际上是整个笔记本电脑)。

这是我试图从 SendGrid 设置页面运行的测试代码:

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY)
const msg = {
  to: 'test@example.com',
  from: 'test@example.com',
  subject: 'Sending with Twilio SendGrid is Fun',
  text: 'and easy to do anywhere, even with Node.js',
  html: '<strong>and easy to do anywhere, even with Node.js</strong>',
};
sgMail.send(msg);
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个新密钥并进行设置,但出现相同的错误。我尝试将其设置为整个密钥,但没有“.SG”或只是 bbb_ccccc 部分。先感谢您。

sli*_*wp2 8

API 密钥不以 SG 开头。

意味着 SendGrid 的 API 密钥应该以开头SG.所以你没有正确设置环境变量。你需要检查一下。只需使用console.log打印环境变量。或者,使用

$ heroku run bash -a mighty-river-12802
Run Code Online (Sandbox Code Playgroud)

为您的应用程序启动控制台,并用于printenv打印环境变量。

Running bash on ? mighty-river-12802... up, run.1571 (Free)
~ $ printenv
TERM=xterm-256color
WEB_MEMORY=512
MEMORY_AVAILABLE=512
COLUMNS=367
DYNO=run.1571
PATH=/app/.heroku/node/bin:/app/.heroku/yarn/bin:/usr/local/bin:/usr/bin:/bin:/app/bin:/app/node_modules/.bin
WEB_CONCURRENCY=1
_=/usr/bin/printenv
PWD=/app
PS1=\[\033[01;34m\]\w\[\033[00m\] \[\033[01;32m\]$ \[\033[00m\]
NODE_ENV=production
LINES=49
TIMES=5
HOME=/app
SHLVL=2
PORT=6791
NODE_HOME=/app/.heroku/node
Run Code Online (Sandbox Code Playgroud)

TIMES: 5 环境变量是通过 heroku 配置变量设置的:

在此处输入图片说明

例如

$ heroku run bash -a mighty-river-12802
Run Code Online (Sandbox Code Playgroud)
$ export SENDGRID_API_KEY=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
$ node index.js
send mail success
Run Code Online (Sandbox Code Playgroud)

按预期收到电子邮件:

在此处输入图片说明


小智 7

你好 如果你使用 node js,请确保在需要 sendgrid/nodemailer 模块的文件中有 require('dotenv').config() 。没有它,sendgrid 传输器将有一个未定义的值而不是 api_key。我也遇到了同样的问题并解决了。


小智 5

我使用的是SendGrids v3和dotenv v8.2,在Node.js SendGrid上设置了一个env文件SendGrid.env,里面有export SENDGRID_API_KEY,我将文件重命名为.env,删除了export,现在它可以工作了。

我的 sendEmail 文件顶部如下所示:

require('dotenv').config();
const sgMail = require('@sendgrid/mail');
const apiKey = `${process.env.SENDGRID_API_KEY}`;
console.log("SendGrid key ", apiKey);
Run Code Online (Sandbox Code Playgroud)

我的.env文件如下所示:

SENDGRID_API_KEY='SG.{left blank}................0EmA'
ANOTHER_API_KEY='ANOTEHERKEY'
Run Code Online (Sandbox Code Playgroud)