Buenas de nuevo, en primer lugar gracias antoniopol por tu tiempo.
Sobre lo de la función MAIL(), segui tu consejo y ahora paso el render como un parametro más en forma de función (se ejecuta como un callback, al terminar de ejecutarse el contenido de la función MAIL() ) así es mas practica dicha función y me aseguro de que el render no se haya ejecutado hasta el momento exacto de que todo termino.
[Dejo la función por si a alguien le parece útil]
Código Javascript
:
Ver originalexports.mail = function (target,from,subject,body,callback){
nodemailer = require("nodemailer")
var smtpTransport = nodemailer.createTransport("SMTP",{
service: "Gmail", //uso el smtp de gmail para las pruebas
auth: {
pass: "pass"
}
});
var mailOptions = {
from: from, // quien envía
to: target, // quienes reciben
subject: subject, // asunto del mensaje
html: body // cuerpo del mensaje (en html)
}
smtpTransport.sendMail(mailOptions, function(error, response){
if(error){ console.log(error); }
else{ console.log("Message sent: " + response.message); }
smtpTransport.close(); // shut down the connection pool, no more messages
});
if(typeof(callback)==="function"){ callback(); }
}
Pero el problema que tengo no era eso. Es cuando realizo el insert, que debería lanzarse el callback pero no lo hace en ningun momento. Lo logico sería pensar que tengo algun problema en el insert de sql propiamente dicho, que hace que el callback no se ejecute, pero si realizo dicho insert sin callback, todo funciona correctamente (inserción, envio de mail, el render con el mensaje).
Lo de depurar con el console.log() fue lo primero que hice. Y aquellos que estan justo antes de empezar y justo despues de terminar el query, me aparecen en la consola, aquellos que estan dentro del callback no se ejecutan nunca.
Sin duda el problema está en la ejecución del callback tras el insert (la entrada en la base de dato, si que la hace, aunque nunca se ejecute el callback).... Seguire indagando y si doy con la tecla, lo compartire aquí para el bien común y de mientras, si a alguien se le ocurre alguna cosa más que probar, sigo estando abierto a sugerencias.
Un saludo a la comunidad!.