Estoy trabajando con un archivo javascript que estoy sirviendo a través de NODE. Tomará la entrada y luego la serializará y enviará un correo electrónico. El código es:
let aws = require('aws-sdk'), ses = new aws.SES({ region: 'us-east-1' }), makeParams = request => { var emailBody = 'dooba dooba'; console.log(request.body) for (var a in request.body) { // console.log(a); emailBody +=' test' console.log(emailBody); // emailBody += `${a}: ${request.body.a}<br />` } return { Destination: { /* required */ ToAddresses: [ // 'xxxxx@gmail.com' 'xxxxx@gmail.com' ] }, Message: { /* required */ Body: { /* required */ Html: { Data: emailBody, /* required */ Charset: 'UTF-8' }, Text: { // Data: emailBody.replace(/<br \/>/, "\r\n"), /* required */ Data: emailBody, Charset: 'UTF-8' } }, Subject: { /* required */ Data: 'New Opportunity Submitted', /* required */ Charset: 'UTF-8' } }, Source: 'xxxxx@gmail.com' } }, send = request => { return ses.sendEmail(makeParams(request)).promise(); };
El script funciona en la medida en que toma una entrada y envía el correo electrónico, el problema es lo que envía al correo electrónico. Cuando lo ejecuto a través del nodo, este es el resultado:
Welcome to Node.js v14.17.6. Type ".help" for more information. > let b = require('./app/bindings.js') undefined > b.send(b.makeParams({body: {foo:'bar',bar:'baz'}})) { foo: 'bar', bar: 'baz' } loopy loopy outside: dooba dooba test test sent undefined outside: dooba dooba Promise { <pending> } > .exit
El texto que debe enviarse al correo electrónico es la variable emailBody. Debería tomar eso y luego agregarle la entrada de send(b.makeParams()
. En mi código, verifiqué que el ciclo se estaba ejecutando al registrar "loopy" y luego registrar el resultado final.
Entonces debería enviar eso, que veo cuando registra "enviar"; sin embargo, no entiendo por qué está pasando de nuevo pero omitiendo el ciclo. Esto se evidencia por el segundo "afuera" que está después del "enviado". Entonces, cuando recibo el correo electrónico en lugar del texto del cuerpo que muestra "dooba dooba test test", recibo "dooba dooba".