Это моя первая попытка создания лямбда-функции с использованием NodeJS.Правильное поведение - сначала отправить электронную почту, а затем открыть страницу Contact_Success.html
.
Функция не отправляет электронную почту, когда она вызывается через API-шлюз с моего веб-сайта, но она открывает страницу Contact_Success.html
.
При тестировании внутри консоли AWS с помощью теста API Gateway или консоли Lambda Dev отправляются электронные письма do .
Вот код:
const AWS = require('aws-sdk');
const querystring = require('querystring');
AWS.config.region = 'us-east-1';
exports.handler = function(evt, context, callback) {
// Our raw request body will be in evt.body.
const params = querystring.parse(evt.body);
// Our field from the request.
const first_name = params['first_name'];
const last_name = params['last_name'];
const emailaddr = params['email'];
const telephone = params['telephone'];
const comments = params['comments'];
var eParams = {
Destination: {
ToAddresses: ["blahblah@blahblah.com"]
},
Message: {
Body: {
Text: {
// Data: first_name
Data: first_name + " " + last_name + " at " + emailaddr + " phone:" + telephone + " post:" + comments
}
},
Subject: {
Data: "BlaBlah Inquirty"
}
},
Source: ‘blahblah@blahblah.com'
};
// Create the promise and SES service object
const sendPromise = new AWS.SES({ apiVersion: "2010-12-01" })
.sendEmail(eParams)
.promise();
// Handle promise's fulfilled/rejected states
sendPromise
.then(data => {
console.log(data.MessageId);
// Generate HTML.
const html = `<script type="text/javascript">window.location = "http://blahblah.com/Contact_Success.html"</script>`;
// Return HTML as the result.
callback(null, html);
context.done(null, "Success");
})
.catch(err => {
console.error(err, err.stack);
// Generate HTML.
const html = `<script type="text/javascript">window.location = "http://blahblah.com/Contact_Error.html"</script>`;
// Return HTML as the result.
callback(null, html);
context.done(null, "Failed");
});
};