我有一个静态的基于表单的HTML联系人页面,用户需要删除其姓名,电子邮件地址,主题和消息,最终我的脚本将通过AWS API-> Lambda-> my 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
}
我也尝试使用邮递员,邮递员说使用200作为返回码,一切都很好。但是仍然没有电子邮件发送到我的Gmail帐户。我检查了云监视日志,所有内容均为绿色。因此,不知道为什么我经过验证的Gmail没有收到任何形式的测试消息。有人可以在这里照明吗?
自定义角色看起来像这样:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendTemplatedEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
答案 0 :(得分:1)
我建议您做两件事,首先尝试使用serverless framework部署代码,该代码可以help依赖IAM角色。
第二,作为替代和补充的步骤,您可以使用来自AWS的以下reference:
选择一个经过验证的电子邮件地址或域,然后选择“发送一个邮件”
测试电子邮件。对于收件人:,键入bounce@simulator.amazonses.com。对于 主题和正文,键入一些示例文本。选择发送测试电子邮件。
重复步骤3和4以创建另一条测试消息,但是这次, 对于“收件人:”,键入投诉@ simulator.amazonses.com。
答案 1 :(得分:1)
您可以打印完整的响应以查看是否在响应中得到消息ID吗?如果是这样,则许可似乎没有问题。 1.您可以在SES控制台中为已验证身份启用“退回/传递/投诉”的SNS通知,并查看在进行sendmail api调用后是否收到任何通知。 https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-sns.html