我在 AWS Lambda 上创建了一个非常基本的简单函数,用于接受表单提交。
该功能的一部分是向特定的人发送电子邮件,非常简单。我正在尝试使用 AWS SES 来做到这一点。我已经设置了 SES 服务等,并验证了我希望发送到的帐户并能够发送测试电子邮件。所有作品!
现在,当我尝试在 AWS Lambda 中执行相同操作并使用 aws sdk 时,它不会发送电子邮件。我没有收到错误或任何东西。
以下是我用于 AWS Lambda 函数的代码。
有没有人有任何使用 lambda 和通过 ses 发送电子邮件的经验,通过 lambda 函数?或者甚至只是使用 node.js aws sdk 很可能会有所帮助。
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: ["toAddress@email.com"]
},
Message: {
Body: {
Text: {
Data: output.Key1
}
},
Subject: {
Data: "Ses Test Email"
}
},
Source: "mysource@source.com"
};
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);
};
最佳答案
看来我将 context.succeed(event) 放在了错误的代码区域。
一旦我将它移到 sendEmail 回调中,一切都正常了。
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: ["toAddress@email.com"]
},
Message: {
Body: {
Text: {
Data: output.Key1
}
},
Subject: {
Data: "Ses Test Email"
}
},
Source: "mysource@source.com"
};
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);
}
});};
关于node.js - 在 AWS Lambda 函数中通过 AWS SES 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32608503/