0 votes
1 view
in AWS by (19.2k points)

I have created a very basic simple function on AWS Lambda which will be used to accept form submissions.

Part of the function will be to send an email to a particular person, pretty simple. I am trying to use AWS SES in order to do this. I have set up the SES service etc and verified the account I wish to send to and have been able to send out a test email. All works!!

Now when I try and do the same within AWS Lambda and use the aws sdk it doesn't send out the email. I don't get an error or anything.

Below is the code that I am using for the AWS Lambda function.

Has anyone had any experience using lambda and sending emails via SES, through a lambda function? Or even just using the node.js aws sdk would more than likely be helpful.

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);

};

1 Answer

0 votes
by (44.6k points)

Move context.succeed(event) into the sendEmail callback, I guess it will work.

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);

    }

});};

Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...