我創建了一個包含以下 JavaScript 的 Lambda 函式;
var AWS = require('aws-sdk');
var ses = new AWS.SES({ region: "us-east-1"});
var RECEIVER = '[email protected]';
var SENDER = '[email protected]';
var response = {
"statusCode": 200,
"headers": {
"Content-Type": "application/json","Access-Control-Allow-Origin": "*"
},
"isBase64Encoded": false,
"body": "{ \"result\": \"Success\"\n}"
}
exports.handler = async function (event, context) {
console.log('Received event:', event);
sendEmail(event, function (err, data) {
context.done(err, null);
});
return response;
};
function sendEmail (event, done) {
var params = {
Destination: {
ToAddresses: [
RECEIVER
]
},
Message: {
Body: {
Text: {
Data: 'name: ' event.name '\nphone: ' event.phone '\nemail: ' event.email '\ndesc: ' event.desc,
Charset: 'UTF-8'
}
},
Subject: {
Data: 'Website Referral Form: ' event.name,
Charset: 'UTF-8'
}
},
Source: SENDER
};
ses.sendEmail(params).promise();
}
該功能由亞馬遜 (aws) REST api 觸發,該 api 從 html 聯系表單獲取資料。這有效,函式成功獲取資料。該功能設定為使用 SES 服務發送電子郵件。該功能具有完整的權限和角色,驗證了電子郵件地址,并且我不在 SES 沙箱中,我增加了功能超時,并且 cloudwatch 日志表明該功能正常作業 日志
為什么我仍然沒有收到電子郵件?我的直覺表明這與 Javascript 代碼有關。對于我長期以來一直試圖解決這個問題的任何幫助,我將不勝感激。該功能確實作業過一次,我成功收到了電子郵件,但那是唯一一次。
uj5u.com熱心網友回復:
這是在 AWS Lambda 函式中使用基于 Promise 的 API 方法時常犯的錯誤。
您需要sendEmail在處理程式中等待 SES 呼叫的結果,否則您的 lambda 函式將退出并且電子郵件將不會被發送。
修改代碼的一種方法是:
exports.handler = async function(event, context) {
console.log('Received event:', event);
const response = await sendEmail(event, function(err, data) {
context.done(err, null);
});
// Probably you should be returning an object with a status code here...I'll leave that to you to figure out!
return response;
};
async function sendEmail(event, done) {
var params = {
Destination: {
ToAddresses: [
RECEIVER
]
},
Message: {
Body: {
Text: {
Data: 'name: ' event.name '\nphone: ' event.phone '\nemail: ' event.email '\ndesc: ' event.desc,
Charset: 'UTF-8'
}
},
Subject: {
Data: 'Website Referral Form: ' event.name,
Charset: 'UTF-8'
}
},
Source: SENDER
};
const response = await ses.sendEmail(params).promise();
return response;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/515179.html
標籤:javascript亚马逊网络服务拉姆达aws-lambda亚马逊
上一篇:如何使用AWSLambda函式將JSON檔案中的指標回應發送到Cloudwatch?
下一篇:模板包含錯誤。:模板格式錯誤:YAML格式不正確。(第30行,第9列),即型別:AWS::EC2::Route行
