• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

297
Views
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); }); }); } }
about 3 years ago · Santiago Trujillo
3 answers
Answer question

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(); }) ;
about 3 years ago · Santiago Trujillo Report

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"}) };});
about 3 years ago · Santiago Trujillo Report

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); }); }
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error