使用Nodejs V3 API发送电子邮件时,我收到以下错误消息:
{
[SendGridError: Response error] message: 'Response error' }
{
statusCode: 401,
body: '{"errors":[{"message":"The provided authorization grant is invalid, expired, or revoked","field":null,"help":null}]}',
headers: {
server: 'nginx',
date: 'Wed, 31 Aug 2016 18:34:49 GMT',
'content-type': 'application/json',
'content-length': '116',
connection: 'close',
'x-frame-options': 'DENY'
}
}
}
该消息是在实时服务器环境中的本地主机实例上生成的。
以下代码用于发送电子邮件:
var helper = require('sendgrid').mail,
sg = require('sendgrid')(SENDGRID_API_KEY);
var from_email = new helper.Email('[email protected]');
var to_email = new helper.Email(myOwnEmail);
var subject = 'Subject';
var content = new helper.Content('text/plain', 'test');
var mail = new helper.Mail(from_email, subject, to_email, content);
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
sg.API(request, function(err, response) {
console.log(err, response);
if (!err) {
res.send({
message: 'An email has been sent to the provided email with further instructions.'
});
} else {
return res.status(400).send({
message: 'Failure sending email'
});
}
});
嗨@ ninox92 ,
这意味着您的API密钥存在问题。
首先,请验证SENGRID_API_KEY的值
然后,请通过https://support.sendgrid.com与我们的支持团队联系,以便他们可以深入了解API密钥权限的问题。
谢谢!
SENGRID_API_KEY已通过验证,并尝试了新创建的API密钥,但也再现了相同的错误消息。
尽管使用CURL POST请求发送电子邮件,但是我能够使用相同的API密钥成功发送电子邮件。
我将尝试再次与支持人员联系。
在您发布的代码中,您有SENGRID_API_KEY
,我认为您的意思是SENDGRID_API_KEY
感谢您指出变量名错字。 我会改变的。 不过,变量已正确填充了我的API密钥。
我只是再次尝试,无法复制。 这是我使用的代码:
var helper = require('sendgrid').mail;
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);
var from_email = new helper.Email('[email protected]');
var to_email = new helper.Email('[email protected]');
var subject = 'Subject';
var content = new helper.Content('text/plain', 'test');
var mail = new helper.Mail(from_email, subject, to_email, content);
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
});
sg.API(request, function(err, response) {
console.log(response.statusCode);
console.log(response.body);
console.log(response.headers);
});
您还能提供适合您的cURL请求吗?
我使用了以下Hello,World! Sendgrid curl示例页面上的
curl --request POST \
--url https://api.sendgrid.com/v3/mail/send \
--header 'Authorization: Bearer SENDGRID_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"personalizations": [{"to": [{"email": "<my-own-email>"}]}],"from": {"email": "[email protected]"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Heya!"}]}'
你好@ ninox92 ,
您是否尝试过使用我提供的代码示例?
该错误意味着您的API密钥设置不正确。
如果您不使用环境变量,则将有:
var sg = require('sendgrid')('SG.XXXXXXXXXXXXXXXXXXX');
我使用完全相同的代码使用新的API KEY创建了一个新帐户。 现在,我可以在等待支持的过程中永久发送电子邮件。
感谢您的跟进,很高兴您能正常运行! 如果您遇到其他任何问题,请告诉我们。
谢谢,对我有很大帮助
嗨,大家好,我遇到了麻烦,它给了我同样的错误,这是我使用的代码。
const express = require('express');
const app = express();
var sg = require('sendgrid')(process.env.SENDGRID_API_KEY);
var port = process.env.PORT || 8080;
app.get('/',函数(req,res){
var helper = require('sendgrid')。mail;
var fromEmail = new helper.Email('[email protected]');
var toEmail = new helper.Email('[email protected]');
var subject ='来自SendGrid Node.js库的Hello World!';
var content = new helper.Content('text / plain','Hello,Email!');
var mail = new helper.Mail(fromEmail,subject,toEmail,content);
var request = sg.emptyRequest({
方法:“ POST”,
路径:“ / v3 / mail /发送”,
正文:mail.toJSON()
});
sg.API(请求,功能(错误,响应){
如果(错误){
console.log('收到错误响应');
}
console.log(response.statusCode);
console.log(response.body);
console.log(response.headers);
});
});
app.listen(port,function(){
console.log(“正在监听:*” +端口);
});
在我的.env.example文件中
SENDGRID_API_KEY =此处为代码/ *我这里具有API代码* /
如果您需要通过带有post methode的api发送电子邮件,则应该这样做:
var helper = require('sendgrid')。mail;
router.post('/',功能(req,res){
var sg=require('sendgrid')('your api key from your account');
var formEmail= new helper.Email('[email protected]');
var toEmail= new helper.Email(req.body.mail);
var subject='text';
var content = new helper.Content('text/plain', 'Your password has been successfully changed');
var mail = new helper.Mail(formEmail, subject, toEmail, content);
var request =sg.emptyRequest({
method:'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
sg.API(request , function (error , response) {
if(error){
console.log('Error response not valid');
}
});
})
module.exports =路由器;
对不起,它现在无法正常工作,我认为这是一个错误,它是202错误。 抱歉
仅针对与我有相同问题的任何人。 如果您使用的是SendGrid的客户端库之一,请确保它是最新的!
我使用的是C#库版本9.9.0
并开始突然发现此错误。 我更新到版本9.10.0
,它解决了问题。
有趣的是,我在使用C#Twilio库时遇到了完全相同的问题,而无需更改任何代码即可解决更新问题。 只是与Twilio收购SendGrid的巧合?
我的情况是下一个:
我的IDE(Intellij CE 2020.10.3)无法正确识别我的环境变量,而不是获取我的sendgrid api键值ej:SG.sddDDeq.qwt,它使用的是.env文件的路径,例如:“ C:/ Users / Me / MyProjectRootFolder / sendgrid.env”,并将其作为“授权”提供给Sendgrid请求标头:“ Bearer C:/Users/Me/MyProjectRootFolder/sendgrid.env:”这是导致错误“提供的授权”的问题。授予无效...”。
如此...尝试调试您的请求标头并验证提供的密钥是否有效(您可以识别环境变量),并且还需要从SendGrid仪表板添加域身份验证或单发件人验证。
希望这对某人有帮助。
最有用的评论
我使用完全相同的代码使用新的API KEY创建了一个新帐户。 现在,我可以在等待支持的过程中永久发送电子邮件。