javascript - 如何在 AWS Lambda 节点 js 中发送 html 电子邮件,为 AWS api 网关返回格式良好的响应
问题描述
我需要创建一个通过亚马逊 SES 发送 html 电子邮件的 api。我正确创建了我的 ses 凭证,我想在 javascript (nodejs) 中创建一个 AWS lambda。由于缺乏使用 javascript 发送电子邮件的良好 AWS 文档,我需要知道如何创建一个 lambda 来发送电子邮件并以正确的消息响应 AWS api 网关。
解决方案
以下是用 javascript 编写的代码。在 AWS lambda 中完美运行,并且在从 AWS Api 网关调用时运行良好(没有格式错误的消息错误):
var aws = require("aws-sdk");
var ses = new aws.SES({
accessKeyId: "Your SES Access Key",
secretAccesskey: "Your Secret key",
region: "us-east-1" // CHANGE with the region where you configured SES
});
exports.handler = function(event, context, callback) {
var requestPath = JSON.parse(JSON.stringify(event.pathParameters));
var requestBody = JSON.parse(event.body);
var responseBody = {};
var response = {};
if (
requestBody &&
requestBody.emailFrom &&
requestBody.subject &&
requestBody.htmlBody
) {
var emailTo = requestPath.emailto;
var emailFrom = requestBody.emailFrom;
var subject = requestBody.subject;
var htmlBody = requestBody.htmlBody;
} else {
responseBody = {
result: "fail",
resultCode: 400,
description:
"Incorrect Parameters. Mandatory: emailFrom, subject and bodyHTML"
};
response = {
statusCode: 400,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify(responseBody),
isBase64Encoded: false
};
callback(null, response);
}
var emailParams = {
Destination: {
ToAddresses: [emailTo]
},
Message: {
Body: {
Html: {
Data: htmlBody
}
},
Subject: {
Data: subject
}
},
Source: emailFrom
};
var email = ses.sendEmail(emailParams, function(err, data) {
var resultCode = 200;
if (err) {
var responseBody = {
result: "FAIL",
resultCode: 500,
description: "Error sending email: " + err
};
resultCode = 500;
} else {
var responseBody = {
result: "OK",
resultCode: 200,
description: "Email sent successfully"
};
}
response = {
statusCode: resultCode,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify(responseBody),
isBase64Encoded: false
};
callback(null, response);
});
};
推荐阅读
- android - Google Drive 403 '已超过未经验证使用的每日限制。继续使用需要注册'(已解决)
- google-cloud-storage - GoogleCloudStorage 重定向到另一个域
- javascript - 如何处理内部服务器错误?巢穴
- graphql - graphql 中的 Dataloader 有时会返回 null 而不是空列表
- c# - 在循环中使用协程
- typescript - 仅覆盖一些通用变量
- php - Laravel 多重查询 (PHP/MySQL)
- c++ - 在 VS2019 中使用 boost 库的问题
- python - 用新格式替换现有日期
- c++ - 对类函数的未定义引用