我有一个基于静态表单的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的以下参考:
- 在https://console.aws.amazon.com/ses/。 上打开Amazon Ses控制台。
- 在左侧的列中,选择电子邮件地址或域。
选择经过验证的电子邮件地址或域,然后选择发送
测试电子邮件。to :,键入bounce@simulator.amazonses.com。为了主题和身体,键入一些示例文本。选择发送测试电子邮件。
重复步骤3和4以创建另一个测试消息,但是这次,to :,键入flump@simulator.amazonses.com。
- 打开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
- 此外,还要检查收件人垃圾邮件框。