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

如何验证AWS Cognito用户池是否成功发送确认邮件?

验证AWS Cognito用户池邮件发送状态的方法

1. 查看Cognito用户池的CloudWatch日志

  • 开启用户池的日志记录:在AWS控制台的Cognito用户池设置里,找到「监控」->「日志记录」,确保已启用并配置正确的CloudLog组。
  • 搜索相关日志:在CloudWatch中,筛选包含SignUp或EmailVerification关键词的日志条目,查看是否有邮件发送成功/失败的状态码和详细信息(比如因邮箱格式、SES限制导致的失败)。

2. 通过Cognito API查询用户状态

在C#代码中,调用AdminGetUserAsync接口,检查用户的UserStatus字段:

var request = new AdminGetUserRequest
{
    UserPoolId = "你的用户池ID",
    Username = "用户邮箱/用户名"
};

var response = await _cognitoClient.AdminGetUserAsync(request);
// 查看UserStatus:如果是UNCONFIRMED,说明注册成功但邮件未确认;如果是CONFIRMED则已确认
// 同时检查UserAttributes里的email_verified字段是否为true

如果用户状态是UNCONFIRMED但用户没收到邮件,大概率是发送环节出问题;如果状态是CONFIRMED,则用户可能已经通过其他方式确认(比如手动后台操作)。

3. 检查SES(简单邮件服务)的发送状态

Cognito默认用SES发送验证邮件,你可以:

  • 登录AWS SES控制台,查看「发送统计」和「已发送邮件」列表,搜索目标邮箱的发送记录,查看是否有退信、拒收或投递失败的记录。
  • 检查SES的发送配额:如果你的账号还在沙箱模式,只能发送到已验证的邮箱地址,未验证的邮箱会被拒绝发送。

4. 测试邮件发送功能

  • 在Cognito用户池的「消息自定义」里,手动发送测试验证邮件到目标邮箱,排查是否是用户端邮箱的问题(比如垃圾邮件箱拦截)。
  • 用C#代码调用ResendConfirmationCodeAsync接口重新发送验证邮件,同时结合CloudWatch日志观察发送状态:
var request = new ResendConfirmationCodeRequest
{
    ClientId = "你的客户端ID",
    Username = "用户邮箱"
};

var response = await _cognitoClient.ResendConfirmationCodeAsync(request);
// 接口返回成功不代表邮件一定送达,但如果返回错误(比如InvalidParameterException),说明参数或配置存在问题

5. 检查用户池的邮件配置

  • 确认用户池的「消息自定义」中,验证邮件的模板配置正确,包含有效的确认链接/验证码。
  • 检查发件邮箱是否已在SES中验证,或者是否使用了AWS默认发件地址(no-reply@verificationemail.com)——部分邮箱服务商可能会拦截这类地址的邮件。

内容的提问来源于stack exchange,提问作者Lional Sandun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:21:01