AWS Lambda 无法向经过验证的 SES 电子邮件地址发送电子邮件



我有一个基于静态表单的HTML联系页面,用户需要在其中删除其名称,电子邮件地址,主题和消息,最终我的脚本将通过AWS API重新路由所有所需的值 -> lambda->我的gmail。

因此,为此,我在SES中已验证了我的Gmail帐户。我的AWS lambda功能如下(在这里,我使用了相同的确认电子邮件地址来发送并发送电子邮件。(

(
'use strict';
console.log('Loading function');
const AWS = require('aws-sdk');
const sesClient = new AWS.SES();
const sesConfirmedAddress = "XXXX@gmail.com";
/**
 * Lambda to process HTTP POST for a contact form with the following body
 * {
      "email": <contact-email>,
      "subject": <contact-subject>,
      "message": <contact-message>
    }
 *
 */
exports.handler = (event, context, callback) => {
    console.log('Received event:', JSON.stringify(event, null, 2));
    var emailObj = JSON.parse(event.body);
    var params = getEmailMessage(emailObj);
    var sendEmailPromise = sesClient.sendEmail(params).promise();
    var response = {
        statusCode: 200
    };
    sendEmailPromise.then(function(result) {
        console.log(result);
        callback(null, response);
    }).catch(function(err) {
        console.log(err);
        response.statusCode = 500;
        callback(null, response);
    });
};
function getEmailMessage (emailObj) {
    var emailRequestParams = {
        Destination: {
          ToAddresses: [ sesConfirmedAddress ]  
        },
        Message: {
            Body: {
                Text: {
                    Data: emailObj.message
                }
            },
            Subject: {
                Data: emailObj.subject
            }
        },
        Source: sesConfirmedAddress,
        ReplyToAddresses: [ emailObj.email ]
    };
    return emailRequestParams;
}

现在在IAM中,我创建了一个策略,并附加了此lambda功能。然后,我创建了API来使用此功能来实现我的目的。

现在,当我单击API中的测试按钮时,它给了我返回代码200。这很棒。但是问题是我在经过验证的Gmail帐户中没有看到任何电子邮件。

我正在使用,这是我的测试消息,

{
      "email": XXXX@example.com,
      "subject": Test,
      "message": This is a Test message
    }

我也尝试使用Postman和Postman说,一切都很好,有200个作为返回代码。但是仍然没有给我的Gmail帐户的电子邮件。我在云手表日志中检查了一切都是绿色的。因此,不知道为什么我经过验证的Gmail没有收到任何类型的测试消息。Anyome可以在这里熄灯吗?

定制角色看起来像这样:

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

我会推荐两件事,首先尝试使用无服务器框架部署代码,这可以帮助您完成IAM角色之类的依赖项。

第二,作为替代和互补步骤,您可以使用AWS的以下参考:

  1. 在https://console.aws.amazon.com/ses/。
  2. 上打开Amazon Ses控制台。
  3. 在左侧的列中,选择电子邮件地址或域。
  4. 选择经过验证的电子邮件地址或域,然后选择发送

  5. 测试电子邮件。to :,键入bounce@simulator.amazonses.com。为了主题和身体,键入一些示例文本。选择发送测试电子邮件。

  6. 重复步骤3和4以创建另一个测试消息,但是这次,to :,键入flump@simulator.amazonses.com。

  7. 打开Amazon SQS控制台https://console.aws.amazon.com/sqs/。消息可用的列应指示可用2条消息。

您可以打印完整的响应以查看是否在响应中获得消息ID?如果是这样,许可似乎没有问题。1.您可以启用SES控制台中验证的身份的反弹/交付/投诉的SNS通知,并查看您在进行SendMail API呼叫后是否收到任何通知。https://docs.aws.amazon.com/ses/latest/developerguide/notifications-via-sns.html

  1. 此外,还要检查收件人垃圾邮件框。

相关内容

  • 没有找到相关文章

最新更新