我在Custom message
触发器上有一个lambda,这是处理程序:
def forgot_password(event, context):
boto_client = boto3.client('ses')
html_body = get_html_file_from_bucket()
email = event['request']['userAttributes']['email']
code_parameter = event['request']['codeParameter']
url_data = {
"username": email,
"code_parameter": code_parameter
}
encoded_params = urllib.parse.urlencode(url_data)
set_new_password_link = f'{os.environ["CONCIL_SET_NEW_PASSWORD_ENDPOINT"]}?{encoded_params}'
html_body = html_body.replace(
"{replace_me}", set_new_password_link)
if event["userPoolId"] == os.environ['COGNITO_USER_POOL_ID']:
if event["triggerSource"] == "CustomMessage_ForgotPassword":
set_new_password_email_response = boto_client.send_email(
Destination={
'ToAddresses': [
email
],
},
Message={
'Body': {
'Html': {
'Charset': "utf-8",
'Data': html_body,
},
},
'Subject': {
'Charset': "utf-8",
'Data': "Redefina a sua senha",
},
},
Source=os.environ["CONCIL_NOTIFICATION_EMAIL"]
)
modify_response(
event, "emailSubject", None)
modify_response(
event, "emailMessage", None)
print("SES RESPONSE")
print(set_new_password_email_response)
else:
return event
print("EVENT")
print(event)
return event
如您所见,我通过AWS SES手动发送来覆盖默认发送行为,之所以这样做,是因为cognito/SES关系的默认行为存在令人讨厌的缺陷(即使我将emailMessage设置为HTML正文,消息也会被默认行为替换)
问题是,现在我收到了两封电子邮件:一封是正确的,另一封是自动发送的不必要的。那么,我怎样才能抑制自动模式呢?在userpool配置上,这是当前默认值:
"SmsVerificationMessage": "Your verification code is {####}. ",
"EmailVerificationMessage": "Seu código de verificação é {####}.",
"EmailVerificationSubject": "Seu código de verificação",
"VerificationMessageTemplate": {
"SmsMessage": "Your verification code is {####}. ",
"EmailMessage": "Seu código de verificação é {####}.",
"EmailSubject": "Seu código de verificação",
"DefaultEmailOption": "CONFIRM_WITH_CODE"
},
我在文档中找不到任何地方可以完全删除这封恼人的自动电子邮件
根据OP的评论,解决方案是在lambda函数返回之前引发异常
相关问题 更多 >
编程相关推荐