You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置SES向Cognito User pool的recoveryEmail发送验证码问题求助

问题排查与解决方案

1. Gmail邮件中验证码占位符{####}未替换

  • 检查Lambda函数中验证码变量的传递逻辑:确保从Cognito触发事件中正确提取验证码,并用实际值替换模板中的{####}。Cognito触发事件里的验证码一般在request.codeParameter或request.validationCode字段,示例代码:
    verification_code = event['request']['codeParameter']
    email_body = "Your verification code is {####}".replace("{####}", verification_code)
    
  • 查看CloudWatch日志:确认Lambda执行时验证码变量已正确赋值,替换后的邮件内容包含实际验证码,排除变量为空或替换失败的情况。
  • 避免Gmail格式干扰:如果使用HTML模板,确保占位符是纯文本节点,不要被CSS或JS逻辑覆盖;纯文本模板尽量避免特殊符号包裹占位符。

2. 自定义属性recoveryEmail收不到邮件

  • 确认Lambda正确读取recoveryEmail属性:Cognito自定义属性带custom:前缀,需从request.userAttributes中提取,示例:
    recovery_email = event['request']['userAttributes'].get('custom:recoveryEmail')
    
  • 检查recoveryEmail的SES验证状态:沙箱模式下,SES仅允许发送到已验证的邮箱。登录SES控制台,在「已验证的身份」中添加并验证该邮箱地址。
  • 验证Lambda的IAM权限:确保Lambda角色包含ses:SendEmail或ses:SendTemplatedEmail权限,资源范围覆盖目标邮箱域。
  • 排查垃圾邮件过滤:让收件人检查垃圾邮件文件夹,调整邮件主题(避免过度堆砌「验证码」等敏感词)和内容,降低垃圾邮件触发概率。

3. 虚假邮箱正常、recoveryEmail异常的差异排查

  • 对比邮箱验证状态:虚假邮箱若已在SES验证,而recoveryEmail未验证,沙箱模式下SES会拒绝发送未验证邮箱的邮件。
  • 检查收件人列表构建逻辑:确保Lambda同时将默认邮箱和recoveryEmail加入SES收件人列表,示例:
    import boto3
    ses_client = boto3.client('ses')
    
    destinations = [
        event['request']['userAttributes']['email'],
        recovery_email
    ]
    
    ses_client.send_email(
        Source='your-verified-sender@example.com',
        Destination={'ToAddresses': destinations},
        Message={
            'Subject': {'Data': 'Your password reset code'},
            'Body': {'Text': {'Data': email_body}}
        }
    )
    
  • 查看SES邮件活动日志:在SES控制台「邮件活动」中,查询发送到recoveryEmail的记录,根据退信原因(如邮箱不存在、未验证、被拒收)针对性修复。

内容的提问来源于stack exchange,提问作者Prem Jogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:20:43