SendGrid似乎阻止我的node js服务器发送电子邮件。
在发送电子邮件时,我收到响应中的此错误消息:
提供的授权授予无效、过期或被撤销
我已经设置了API密钥,并遵循了文档。
SendGrid似乎阻止我的node js服务器发送电子邮件。
在发送电子邮件时,我收到响应中的此错误消息:
提供的授权授予无效、过期或被撤销
我已经设置了API密钥,并遵循了文档。
我知道这是一个晚回答且与JAVA有关.. 但我只是简单地复制了文档并没有注意到..
SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
我刚把钥匙放在那里,却没有看到getEnv。当然很愚蠢..但是当试图快速解决问题时..
new SendGrid("SENDGRID_API_KEY");
这对我起作用了。System.getenv 不起作用。 - Yuvaraj Chitela对我而言,我只需要生成一个新的API密钥。由于某种奇怪的原因,以前的API密钥已经失效,所以我还添加了一个针对此情况的警报。
node js
,sendgrid/nodemailer
模块的文件中有 require('dotenv').config()
行。api_key
的 undefined
值。在我的情况下,我试图通过使用telnet调试连接,但一直被拒绝。
事实证明,这两者并不等同,echo
会在编码字符串中包含\n
。
echo 'apikey' | base64
printf 'apikey' | base64
SENDGRID_API_KEY=SG.XXXXXXXXXXXXXXXXXXX
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);
工作
var sg = require('sendgrid')('SG.XXXXXXXXXXXXXXXXXXX');
对我来说,我刚刚创建了一个新的API密钥,然后它又可以工作了。我百分之百确定它在没有任何代码更改的情况下就能正常工作。
也许这是SendGrid的问题,或者是SendGrid的某种安全操作引起的。
安装dotenv包:npm i dotenv
进入应用程序的最早入口点(即index.js),并将以下内容放在顶部:
const dotenv = require('dotenv').config();
创建一个.env文件并添加SENDGRID_API_KEY=<YOUR_API_KEY>。不要加引号''或""。
在使用sendgrid的文件中,将以下内容添加到顶部:
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
完成。
对于那些在Spring Boot中遇到相同问题的人,可能已经晚了,但是
这可能是由于在初始化时使用env或property值引起的
我在构造函数中初始化变量,而此时Spring尚未加载该值,因此会产生相同的输出。因此,请在调用SendGrid函数的方法中初始化它,或在加载值后进行初始化。
不要使用,
api_key: ${process.env.SENDGRIDAPIKEY}
可以尝试,
api_key: "" + ${process.env.SENDGRIDAPIKEY}
+ ""
这对我有用,