Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
Intentando enviar correo electrónico con Nodemailer y Twilio Sendgrid con autenticación normal (no Oauth2). SendMessage() falla con Error: faltan credenciales para PLAIN

Estoy intentando enviar un correo electrónico usando Nodemailer y Twilio Sendgrid, siguiendo el tutorial aquí . Por lo que sé, estoy siguiendo las instrucciones del tutorial, así como la documentación de Nodemailer y Sendgrid . Cada vez que se llama a este método, se ejecuta el código en el bloque catch y aparece el error Error: Missing credentials for "PLAIN" .

Mi pregunta se cerró debido a la asociación con la pregunta aquí , sin embargo, mi problema es diferente y no se aplica ninguna de las soluciones en el hilo. Estoy usando mi propio dominio para enviar, no gmail.com. Quiero resolver el problema sin usar Oauth2, que por lo que entiendo no debería necesitar, dado que estoy usando un dominio de correo electrónico que controlo. Además, ya estoy usando pass' rather than 'password para mis datos de autorización (la solución principal en la respuesta asociada).

¡He estado atascado en esto durante unos días y agradecería cualquier información que alguien pueda ofrecer!

Aquí está mi código:

 async function sendEmail(email, code) { try{ const smtpEndpoint = "smtp.sendgrid.net"; const port = 465; const senderAddress = 'Name "contact@mydomain.com"'; const toAddress = email; const smtpUsername = "apikey"; const smtpPassword = process.env.SG_APIKEY; const subject = "Verify your email"; var body_html = `<!DOCTYPE> <html> <body> <p>Your authentication code is : </p> <b>${code}</b> </body> </html>`; let transporter = nodemailer.createTransport({ host: smtpEndpoint, port: port, secure: true, auth: { user: smtpUsername, pass: smtpPassword, }, logger: true, debug: true, }); let mailOptions = { from: senderAddress, to: toAddress, subject: subject, html: body_html, }; let info = await transporter.sendMail(mailOptions); return { error: false }; } catch (error) { console.error("send-email-error", error); return { error: true, message: "Cannot send email", }; } }

Y aquí está el registro: registro de errores en bash terminal

¡Gracias!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Ya identificó el problema de la clave API que no se pasa al transporte de Nodemailer. Si bien codificar la clave es una posible solución, no es una buena práctica. Por lo general, los secretos y las claves se administran a través de variables de entorno, por lo que, por ejemplo, no se asignan accidentalmente a un repositorio y se pueden configurar externamente sin cambiar el código.

En el tutorial que vinculó, se aborda el trabajo con la variable de entorno, pero veo que hay un error con el archivo .env . Así que permítanme intentar recapitular cómo obtener correctamente SG_APIKEY de la variable de entorno y el archivo .env .

  • En el directorio de su proyecto, cree el archivo .env con los siguientes contenidos:
     SG_APIKEY=<your_sendgrid_api_key>
    (obviamente, reemplace <your_sendgrid_api_key> con su clave API real)
  • Asegúrese de que el paquete dotenv esté instalado: npm i dotenv
  • Al comienzo del archivo donde usa Nodemailer, agregue la siguiente línea:
     require("dotenv").config();
    Esto asegurará que SG_APIKEY se cargue desde el archivo .env .
  • Puede verificar si la variable env está configurada correctamente con console.log(process.env.SG_APIKEY)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Un comentario sobre la versión anterior (cerrada) de este hilo resolvió el problema para mí:

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda