Lambda - sendEmail return Internal server error , but email was send properly

0

Hi guys,

I have Lambda that sends Email email was send and I received it correctly, but it returns Internal server error,

and no errors in the CloudWatch.

Did someone had similar issue maybe?

Thank you

var AWS = require("aws-sdk");
var ses = new AWS.SES();
var {getTemplate} = require("./email-template.js")

var response = {
  isBase64Encoded: false,
  headers: {
    "Content-Type": "application/json",
    "Access-Control-Allow-Origin": "*",
  },
  statusCode: 200,
  body: JSON.stringify({ success: true, message: "Email sent successfully!" }),
};

const responseFailed = (error) => ({
  isBase64Encoded: false,
  headers: {
    "Content-Type": "application/json",
    "Access-Control-Allow-Origin": "*",
  },
  statusCode: 200,
  body: `{"result": { "success": false , "error": ${error}}}`,
});


exports.handler = function (event, context) {
  console.log("Received event:", event);

  var data = event.body ? JSON.parse(event.body) : event;
  
  sendEmail(data, function (err, data) {
    console.log("error", err);
    if (err) {
       console.log("Error sending email:", err);
       return responseFailed;
    } else {
       console.log("Email sent successfully:", data);
    }

    context.done(err, null);
  });
  
  console.log("send finished");
  return response;
};
 
 
function sendEmail(event, done) {
  var senderEmail = event.senderEmail;
  var company = event.company";
  var email = event.email;
  var name = event.name;
  var message = event.message;

  var receiverEmail = event.companyEmail;
  
  var template = getTemplate({ name, email, body: message });


  var params = {
    Destination: {
      ToAddresses: [receiverEmail],
    },
    Message: {
      Body: {
        Html: {
          Data: template,
        }
      },
      Subject: {
        Data: event.subject,
        Charset: "UTF-8",
      },
    },
    Source: senderEmail,
  };
  ses.sendEmail(params, done);
}




asked 9 months ago174 views
1 Answer
0

Two possible causes here:

  1. The Lambda function is timing out - that is, the maximum runtime (default three seconds but can be increased in your function configuration).
  2. The function calls you're making are asynchronous in nature and need to be waited upon before the function terminates. See https://docs.aws.amazon.com/lambda/latest/dg/nodejs-handler.html (there's many other resources on the internet that talk to this as well).
profile pictureAWS
EXPERT
answered 9 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions