#node.js #angular #aws-lambda #amazon-cognito #aws-amplify
#node.js #angular #aws-lambda #amazon-cognito #aws-amplify
Вопрос:
Кто-нибудь, пожалуйста, скажите мне, как можно отправить это письмо только после Post подтверждения регистрации. Этот код отправляет почту после каждого подтверждения, будь то забыть пароль / сбросить пароль или зарегистрироваться.
var aws = require('aws-sdk');
var ses = new aws.SES();
exports.handler = (event, context, callback) => {
console.log(event);
if (event.request.userAttributes.email) {
sendEmail(event.request.userAttributes.email, "Congratulations " event.userName ", you have been confirmed: ", function(status) {
// Return to Amazon Cognito
callback(null, event);
});
} else {
// Nothing to do, the user's email ID is unknown
callback(null, event);
}
};
function sendEmail(to, body, completedCallback) {
var eParams = {
Destination: {
ToAddresses: [to]
},
Message: {
Body: {
Text: {
Data: body
}
},
Subject: {
Data: "Cognito Identity Provider registration completed"
}
},
// Replace source_email with your SES validated email address
Source: "<source_email>"
};
var email = ses.sendEmail(eParams, function(err, data){
if (err) {
console.log(err);
} else {
console.log("===EMAIL SENT===");
}
completedCallback('Email sent');
});
console.log("EMAIL CODE END");
};
Ответ №1:
Вы можете проверить triggerSource
атрибут event
объекта.
После подтверждения события регистрации источником триггера будет PostConfirmation_ConfirmSignUp
Ваша функция дескриптора будет выглядеть следующим образом:
exports.handler = (event, context, callback) => {
console.log(event);
if (
event.request.userAttributes.email
amp;amp; event.triggerSource === "PostConfirmation_ConfirmSignUp") {
sendEmail(event.request.userAttributes.email, "Congratulations " event.userName ", you have been confirmed: ", function (status) {
// Return to Amazon Cognito
callback(null, event);
});
} else {
// Nothing to do, the user's email ID is unknown
callback(null, event);
}
};