如何防止cognito发送自动电子邮件?

2024-06-16 09:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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"
    },

我在文档中找不到任何地方可以完全删除这封恼人的自动电子邮件


Tags: clienteventnewemailresponsehtmlcodede