2
respostas

Ao tentar enviar um email eu estou recebendo um erro no console

Error: self signed certificate in certificate chain
    at TLSSocket.onConnectSecure (_tls_wrap.js:1491:34)
    at TLSSocket.emit (events.js:315:20)
    at TLSSocket._finishInit (_tls_wrap.js:933:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:691:12) {
  code: 'ESOCKET',
  command: 'CONN'

Eu criei um arquivo email.js como mostrado no curso e segui todas as instruções, adicionei no usuarios.controlador.js e iniciei o servidor.

const nodemailer = require('nodemailer')

async function enviaEmail(usuario){
    const contaTeste = await nodemailer.createTestAccount()
    const transportador = nodemailer.createTransport({
        host: 'smtp.ethereal.email',
        auth: contaTeste
    })
    const info = await transportador.sendMail({
        from: '"Blog Do Código"<noreply@blogdocodigo.com.br>',
        to: usuario.email,
        subject: 'teste de email',
        text: 'ola este é um email de teste'
    })
    const link = nodemailer.getTestMessageUrl(info)
    console.log('Url: ' + link)
}

module.exports ={enviaEmail}

O problema é que recebi esse erro ao invés do link de confirmação. Eu busquei me informar na documentação do nodemailer tanto no site oficial quanto no npmjs.com mas não consegui uma resposta satisfatória, alguem pode me ajudar com isso?

2 respostas

Respondendo minha própria duvida, para se alguém estiver com o mesmo problema conseguir resolver. A função createTestAccount do nodemailer gera um certificado para si mesma sem depender de autoridade certificadora e o node por padrão bloqueia esse tipo de função, então para resolver isso eu adicionei a variável de ambiente

NODE_TLS_REJECT_UNAUTHORIZED='0'

no arquivo .env e o node permitiu o envio de emails.

obs: essa solução é útil no ambiente de desenvolvimento mas é impraticável em produção

Boa Cassio, sinto muito que tenhamos demorado a responder sua questão, mas fico bem feliz que você tenha encontrado a solução e compartilhado aqui. Obrigado e caso precise, não pense duas vezes, conta com a gente aqui no fórum, tá bem? Bons estudos!