Ao enviar um e-mail usando a API Nodejs V3, recebo a seguinte mensagem de erro:
{
[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'
}
}
}
Esta mensagem é produzida em uma instância localhost como em um ambiente de servidor ativo.
O seguinte código é usado para enviar o e-mail:
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'
});
}
});
Olá @ ninox92 ,
Isso significa que há um problema com sua chave de API.
Primeiro, verifique o valor de SENGRID_API_KEY
Em seguida, entre em contato com nossa equipe de suporte em https://support.sendgrid.com para que eles possam descobrir o que há de errado com as permissões da sua chave API.
Obrigado!
SENGRID_API_KEY foi verificado e tentou uma chave de API recém-criada, mas também reproduziu a mesma mensagem de erro.
Usando uma solicitação CURL POST para enviar um e-mail, porém, consegui enviar um e-mail com sucesso usando a mesma chave API.
Vou tentar entrar em contato com o suporte mais uma vez.
No código que você postou, você tem SENGRID_API_KEY
e estou pensando que você quis dizer SENDGRID_API_KEY
Obrigado por apontar o erro de digitação do nome da variável. Eu vou mudar isso. No entanto, a variável foi preenchida corretamente com minha chave de API.
Acabei de tentar novamente e não consegui reproduzir. Aqui está o código que usei:
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);
});
Você também poderia fornecer a solicitação cURL que está funcionando para você?
Usei o seguinte Hello, World! exemplo da página de exemplos de curl Sendgrid
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!"}]}'
Olá @ ninox92 ,
Você tentou usar o exemplo de código que forneci?
Esse erro significa que sua chave API não está sendo definida corretamente.
Se você não estiver usando variáveis de ambiente, terá:
var sg = require('sendgrid')('SG.XXXXXXXXXXXXXXXXXXX');
Criei uma nova conta com uma nova chave de API com exatamente o mesmo código. Agora consigo enviar e-mails enquanto espero pelo suporte uma eternidade.
Obrigado pelo acompanhamento, estou feliz que você esteja funcionando! Informe-nos se tiver algum outro problema.
obrigado me ajuda muito
oi pessoal estou tendo problemas, deu-me o mesmo erro aqui está o código que eu uso.
const express = require ('express');
const app = express ();
var sg = require ('sendgrid') (process.env.SENDGRID_API_KEY);
var port = process.env.PORT || 8080;
app.get ('/', função (req, res) {
var helper = require ('sendgrid'). mail;
var fromEmail = new helper.Email ('[email protected] ');
var toEmail = novo helper.Email ('[email protected] ');
var subject = 'Hello World da biblioteca SendGrid Node.js!';
var content = new helper.Content ('text / plain', 'Hello, Email!');
var mail = novo helper.Mail (fromEmail, assunto, toEmail, conteúdo);
var request = sg.emptyRequest ({
método: 'POST',
caminho: '/ v3 / mail / send',
corpo: mail.toJSON ()
});
sg.API (solicitação, função (erro, resposta) {
if (erro) {
console.log ('Resposta de erro recebida');
}
console.log (response.statusCode);
console.log (response.body);
console.log (response.headers);
});
});
app.listen (porta, função () {
console.log ("Ouvindo: *" + porta);
});
e no meu arquivo .env.example
SENDGRID_API_KEY = código aqui / * eu tenho o código API aqui * /
se você precisar enviar e-mail via API com método de postagem, faça assim:
var helper = require ('sendgrid'). mail;
router.post ('/', função (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');
}
});
})
módulo.exportações = roteador;
Desculpe pelo problema está funcionando agora eu pensei que era um erro, era um erro 202. Desculpe
Apenas para qualquer pessoa com o mesmo problema que eu. Se você estiver usando uma das bibliotecas cliente do SendGrid, certifique-se de que ela esteja atualizada!
Eu estava usando a versão da biblioteca C # 9.9.0
e comecei a receber este erro do nada. Eu atualizei para a versão 9.10.0
e isso resolveu o problema.
Curiosamente, tive exatamente o mesmo problema com a biblioteca C # Twilio que uma atualização resolveu sem que eu tivesse que alterar nenhum código. Apenas uma coincidência com Twilio adquirindo SendGrid?
No meu caso foi o seguinte:
Meu IDE (Intellij CE 2020.10.3) não estava reconhecendo minha variável enviromet corretamente, em vez de obter o valor da chave API de sendgrid ej: SG.sddDDeq.qwt, ele estava pegando o caminho para o arquivo .env, ej: "C: / Usuários / Me / MyProjectRootFolder / sendgrid.env "e fornecê-lo aos cabeçalhos de solicitação Sendgrid como" Autorização ":" Portador C: /Users/Me/MyProjectRootFolder/sendgrid.env: "qual é o problema que leva ao erro" A autorização fornecida concessão é inválida ... ".
Então ... tente depurar seus cabeçalhos de solicitação e verifique se a chave fornecida é válida (você pode reconhecer sua variável env), e também precisa adicionar uma Autenticação de domínio ou Verificação de remetente único de seu painel SendGrid.
Espero que isso ajude alguém.
Comentários muito úteis
Criei uma nova conta com uma nova chave de API com exatamente o mesmo código. Agora consigo enviar e-mails enquanto espero pelo suporte uma eternidade.