Sendgrid-nodejs: incapaz de enviar e-mail

Criado em 15 dez. 2017  ·  17Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Resumo do problema

* APOIO DIRETO A MIM AQUI *
PROVA: https://support.sendgrid.com/hc/en-us/requests/1325416?page=1

Não consigo enviar e-mail com a biblioteca. suporte me direcionou aqui. Estou tentando enviar de node.js, executando em localhost. Tentei primeiro o exemplo conforme listado no npm, mas recebo um erro 401 com um cabeçalho semelhante a x-no-cors reason . então tentei usar o pacote @sendgrid/mail vez disso, e com isso recebo um erro que diz o seguinte:

TypeError: Cannot read property 'errors' of undefined
at ResponseError.toString (E:\songsplits\api\node_modules\@sendgrid\helpers\classes\response-error.js:45:27)
at Function.CapturedTrace.parseStackAndMessage (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:176:25)
at CapturedTrace.attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:79:32)
at Promise._attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\debuggability.js:102:19)
at Promise._rejectCallback (E:\songsplits\api\node_modules\bluebird\js\main\promise.js:471:10)
at E:\songsplits\api\node_modules\bluebird\js\main\promise.js:486:17
at Request.http [as _callback] (E:\songsplits\api\node_modules\@sendgrid\client\src\client.js:124:18)
at Request.self.callback (E:\songsplits\api\node_modules\request\request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1091:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)

Passos para reproduzir

aqui está um módulo mínimo para reproduzir

email.js


const sgMail = require('@sendgrid/mail')

sgMail.setApiKey(process.env.SENDGRID_KEY);

module.exports.send = function send(html,subject,to,from){

    return new Promise((resolve,reject)=>{

        sgMail.send({
            to,
            from,
            subject,
            html
        }).then(resolve).catch(reject);

    });
};

index.js

const send = require('./mail');

send(
    '<!DOCTYPE html><html><head><title>Hi</title></head><body>Hi</body></html>',
    'Hi',
    '[email protected]',
    '[email protected]',
).then(()=>console.log('sent an email successfully!')).catch(err=>console.log(err));

Detalhes técnicos:

  • Versão sendgrid-nodejs: master (commit mais recente: [número do commit])
  • Versão Node.js: 6
help wanted question

Todos 17 comentários

acabei de tentar com outra chave também, e não bueno. às vezes, o erro não ocorre, e então a resposta é

Unauthorized (401)
Permission denied, wrong credentials

Olá @ r3wt ,

Esse é um problema com o qual nossa equipe de suporte pode ajudar. Eles podem ajudar a vasculhar sua conta para descobrir o problema com sua (s) chave (s).

Obrigado!

Obrigado pela atenção,

Elmer

@thinkingserious Sua equipe de suporte é quem me direcionou aqui.

@ r3wt

Sei que isso pode acontecer se você publicar sua chave de API no github, porque nossa equipe de conformidade desativará sua chave.

A outra coisa que pode acontecer é se você tiver ativado o gerenciamento de IP, onde sua conta só pode ser acessada por IPs específicos. Se o seu código estiver sendo executado em um IP que não está nessa lista, ele também causará erros.

Você pode me fazer um favor e criar uma nova chave de API com privilégios de email / envio e tentar o código novamente?

Enquanto você faz isso, pode nos dizer o número do seu tíquete de suporte?
Obrigado!!

Eu vejo o tíquete agora ... então vou olhar lá também. Obrigado!

@mbernier a chave está em um arquivo de configuração em um

agora, algumas informações sobre minha conexão:

  • satélite, ipv6. sem conexões de entrada remotas.
  • estou executando o aplicativo no localhost

Portanto, se for privado, isso não será um problema - embora nossas equipes de InfoSec sempre sugiram não colocar as chaves, mesmo em repositórios privados :)

Seu aplicativo deve ser capaz de enviar os e-mails.

Você pode ir aqui: https://sendgrid.com/docs/API_Reference/api_v3.html e tentar enviar por meio da guia "Experimente" na página de documentos? Se você receber um erro de volta, poste a resposta e o erro aqui.

@mbernier

image

@mbernier, infelizmente, ainda ocorrem erros em node.js

image

Parece que sua conta não está ativada. Você pode fazer o login em app.sendgrid.com e procurar as notificações no topo da página. Ele o orientará a fornecer um pouco mais de informações sobre você, a fim de provar que é um bom remetente.

@mbernier a conta de meus clientes está ativa há pelo menos 2 anos. Verifiquei os logs e o cliente está enviando ativamente outras campanhas de e-mail e outras coisas? Estou confuso.

@mbernier depois de seguir as instruções de configuração do menu de conta interativa, funcionou. tão bizarro.

Desculpe por isso, não tenho certeza do que poderia ter acontecido. Fiz anotações no tíquete de suporte, então espero que com o acesso deles eles possam nos dar mais detalhes.

Estou feliz que esteja funcionando agora!

@ r3wt Vou encerrar isto.

@mbernier, o problema está acontecendo novamente.

Olá @ r3wt ,

Você poderia, por favor, entrar em contato com nossa equipe de suporte por meio do tíquete de suporte original que você abriu com eles e criar um link para este tópico? Estou pensando que algo pode ter acontecido com sua conta e eles têm as ferramentas para investigar sua conta.

Obrigado!

Obrigado pela atenção,

Elmer

Apenas para avisar, eu tive problemas muito semelhantes, tanto quanto posso dizer (ainda novos). A solução foi configurar a variável chave de API na plataforma de aplicativos heroku https://devcenter.heroku.com/articles/sendgrid#setup -api-key-environment-variable
Sem problemas agora para mim.

Esta página foi útil?
0 / 5 - 0 avaliações