node.js - 在 AWS Lambda 函数中通过 AWS SES 发送电子邮件

标签 node.js amazon-web-services aws-sdk aws-lambda

我在 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/

相关文章:

javascript - 如何将实时数据从nodejs服务器推送到AngularJS?

javascript - mongodb 的结果为 null,但 if (!result) 未捕获它

c# - 使用 "DescribeInstanceStatus"例程过滤 EC2 实例 - AWS SDK

java - 在 Java 中使用 Lambda 函数的 AWS S3 事件通知

javascript - typescript 对象模式?

node.js - 使用解构赋值进行部分对象复制

amazon-web-services - 设计分区键以确保特定类型的数据进入 Kinesis 中的同一分片

amazon-web-services - 如何使用 S3/Cloudfront 在子文件夹中提供 index.html?

amazon-web-services - 是否可以一次在多个区域部署相同的 aws lambda jar?

javascript - AWS 开发工具包 getOjbect 不返回文件