usar servicio sendemail que nodejs node correo como aws amazonses node.js amazon-web-services aws-sdk aws-lambda

node.js - servicio - Enviar correo electrónico a través de AWS SES dentro de la función AWS Lambda



ses amazon email (2)

Esto se debe a que Lambda congela el contenedor cuando la función finaliza y se congela cualquier proceso asíncrono, como su correo electrónico. Esto es especialmente cierto con Node. Ver el modelo de programación de Lambda. http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction.html

Creé una función simple muy básica en AWS Lambda que se usará para aceptar envíos de formularios.

Parte de la función será enviar un correo electrónico a una persona en particular, bastante simple. Estoy tratando de usar AWS SES para hacer esto. Configuré el servicio SES, etc., y verifiqué la cuenta a la que deseo enviar y pude enviar un correo electrónico de prueba. ¡Todo funciona!

Ahora, cuando intento hacer lo mismo dentro de AWS Lambda y uso el sdk aws, no envía el correo electrónico. No obtengo un error ni nada.

A continuación se muestra el código que estoy usando para la función AWS Lambda.

¿Alguien ha tenido alguna experiencia usando lambda y enviando correos electrónicos a través de ses, a través de una función lambda? O incluso simplemente usar node.js aws sdk sería muy útil.

var aws = require(''aws-sdk''); var ses = new aws.SES({ accessKeyId: ''myAccessKey'', secretAccesskey: ''mySecretKey'', region: ''eu-west-1'' }); exports.handler = function(event, context) { console.log("Incoming: ", event); var output = querystring.parse(event); var eParams = { Destination: { ToAddresses: ["[email protected]"] }, Message: { Body: { Text: { Data: output.Key1 } }, Subject: { Data: "Ses Test Email" } }, Source: "[email protected]" }; console.log(''===SENDING EMAIL===''); var email = ses.sendEmail(eParams, function(err, data){ if(err) console.log(err); else { console.log("===EMAIL SENT==="); console.log(data); } }); console.log("EMAIL CODE END"); console.log(''EMAIL: '', email); context.succeed(event); };


Parece que tuve el context.succeed (evento) colocado en el área equivocada de código.

Una vez que lo cambié a la devolución de llamada de sendEmail, todo funcionó.

var aws = require(''aws-sdk''); var ses = new aws.SES({ accessKeyId: ''myAccessKey'', secretAccesskey: ''mySecretKey'', region: ''eu-west-1'' }); exports.handler = function(event, context) { console.log("Incoming: ", event); var output = querystring.parse(event); var eParams = { Destination: { ToAddresses: ["[email protected]"] }, Message: { Body: { Text: { Data: output.Key1 } }, Subject: { Data: "Ses Test Email" } }, Source: "[email protected]" }; console.log(''===SENDING EMAIL===''); var email = ses.sendEmail(eParams, function(err, data){ if(err) { console.log(err); context.fail(err); }; else { console.log("===EMAIL SENT==="); console.log("EMAIL CODE END"); console.log(''EMAIL: '', email); console.log(data); context.succeed(event); } });};