我在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); } });};