首页 > 解决方案 > Lambda 上的 AWS SES - 无法(静默)发送电子邮件

问题描述

我正在尝试在服务,以便向经过验证的收件人发送电子邮件。

我正在关注这个简单的教程,它显示了一个简单的函数:

var aws = require('aws-sdk');
var ses = new aws.SES({region: 'us-east-1'});

exports.handler = (event, context, callback) => {

     var params = {
        Destination: {
            ToAddresses: ["recipientEmailAddress"]
        },
        Message: {
            Body: {
                Text: { Data: "Test" }
            },
            Subject: { Data: "Test Email" }
        },
        Source: "sourceEmailAddress"
    };

     ses.sendEmail(params, function (err, data) {
        callback(null, {err: err, data: data});
        if (err) {
            console.log(err);
            context.fail(err);
        } else {                
            console.log(data);
            context.succeed(event);
        }
    });
};

以下策略是 lambda 角色的一部分:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail"
            ],
            "Resource": "*"
        }
    ]
}

出于某种原因,此 lambda 函数无法发送任何电子邮件,并且未在函数的 CloudWatch 日志组内提供任何状态信息:

REPORT RequestId: XXX   Duration: 534.59 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 117 MB 


任何帮助,将不胜感激。



编辑:我工作的来源sandbox-mode收件人都是来自代码中提到的区域的经过验证的电子邮件(它也反映在日志中 - 没有引发错误)。


我在 SO 中找到了以下问题 - 但没有与我的案例相关的答案:

在 AWS Lambda 函数中通过 AWS SES 发送电子邮件

AWS SES 发送电子邮件 lambda 不是每次都发送

SES 电子邮件未发送

python 错误使用 amazon ses 和 aws lambda 发送邮件

标签: amazon-web-servicesaws-lambdaamazon-iamamazon-ses

解决方案


您的代码非常好。我刚刚尝试使用您的代码,它没有问题。

我建议您检查您的身份设置和沙盒模式。

如果您仍处于沙盒模式,它只允许您从经过验证的电子邮件地址向其他经过验证的电子邮件地址发送电子邮件。

文档将很有帮助。


推荐阅读