Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

304
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!