• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

296
Vistas
Nodemailer no envía respuesta

Estoy trabajando en mi primer proyecto express. Estoy usando Nodemailer y está enviando correos electrónicos muy bien, pero no obtengo una respuesta. ¿Alguna idea? Aquí está la función que estoy usando para enviar los correos electrónicos. La consola registra el mensaje enviado correctamente, pero no parece responder.

 exports.email = function(req, res, options, tokens) { receiver_id= options.email.receiver_id; message= options.email.message; sender_email = options.email.sender_email; sender_name = options.email.sender_name; slug=options.info.slug; org_name=options.info.org_name; dir_url=options.info.dir_url; var https = require('https'); str = ''; //getting user email by id path = '/api/v1/people/' + receiver_id +'?__proto__=&access_token=' + tokens[slug]; var options = { host: slug + '.nationbuilder.com', path: path, method: "GET", json: true, headers: { "content-type": "application/json", "accept": "application/json" }, } var nb_req = https.get(options, req_callback); function req_callback(response, res) { response.on('data', function(chunk) { str += chunk; }); response.on('end', function() { object = JSON.parse(str); receiver_email = object.person.email1; var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ port:465, host:"smtp.gmail.com", auth: { user: 'connect@alumninations.com', // Your email id pass: '69$6FK$b6PQu' // Your password } }); var html = '<p>From: ' + sender_email + '<br>'; html += 'To: ' + receiver_email + '</p>'; html += "<p>"+message + "</p>" html += "<p>This message was delivered by the " + org_name + " alumni directory website, " + "<a href='" + dir_url + "'>" + dir_url + "</p>"; var mailOptions = { from: 'connect@alumninations.com', // sender address to: 'petervankoughnett@gmail.com', // list of receivers subject: "A message from " + sender_name, // Subject line /*text: "Message sent to", // plaintext body*/ html: html }; transporter.sendMail(mailOptions, function(error, info){ if(error){ console.log(error); res.json({yo: 'error'}); }else{ console.log('Message sent: ' + info.response); res.sendStatus(200); }; return res.sendStatus(200); }); }); } }
almost 3 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Te falta res.end() después de res.sendStatus(200); .

 transporter.sendMail(mailOptions, function(error, info){ if (error){ console.log(error); res.json({yo: 'error'}); res.sendStatus(500); }else{ console.log('Message sent: ' + info.response); res.sendStatus(200); }; return res.end(); }) ;
almost 3 years ago · Santiago Trujillo Denunciar

0

use res.status(200).json() en su lugar:

 transporter.sendMail(mailOptions, function(error, info){ if (error){ console.log(error); res.json({yo: 'error'}); res.sendStatus(500); }else{ console.log('Message sent: ' + info.response); res.status(200).json({"msg": "mesage has been sent"}) };});
almost 3 years ago · Santiago Trujillo Denunciar

0

Este es el problema asíncrono de JavaScript. También tengo el mismo problema. Cuando llame a la función de correo electrónico desde el exterior, no devolverá nada, por lo que obtendrá 'indefinido', porque devolvió una respuesta dentro de una función de devolución de llamada.

 router.post('/"your api path"',async(req,res)=>{ //remaining codes transporter.sendMail(mailOptions, function(error, info){ if(error){ console.log(error); res.status(400).json({yo: 'error'}); }else{ console.log('Message sent: ' + info.response); res.sendStatus(200); }; return res.sendStatus(200); }); }
almost 3 years ago · Santiago Trujillo 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda