Lambda上的AWS SES-(无声地)无法发送电子邮件

问题描述 投票:1回答:2

我正在尝试在上使用服务,以便向已验证的收件人发送电子邮件。

我正在关注this简单教程,其中显示了一个简单的功能:

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 Log组内未提供任何状态信息:

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

任何帮助将不胜感激。


EDIT:我在sandbox-mode工作,sourcerecipient都是来自代码中提到的区域的经过验证的电子邮件(它也反映在日志中-没有抛出任何错误)。


我在SO中发现了以下问题-但对我的案子没有相关答案:

Sending email via AWS SES within AWS Lambda function

AWS SES send email lambda not sending every time

SES email not sending

python error sending mail with amazon ses with aws lambda

amazon-web-services aws-lambda amazon-iam amazon-ses
2个回答
1
投票

您的代码非常好。我只是尝试使用您的代码,所以没有问题。

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

如果您仍处于沙盒模式,则仅允许您将电子邮件从已验证的电子邮件地址发送到其他已验证的电子邮件地址。

This文档将很有帮助。


0
投票

我认为context.succeed已过时。您也可以使用async/await

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

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

const data = ses.sendEmail(params).promise()
return data
};
© www.soinside.com 2019 - 2024. All rights reserved.