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

如何在AWS Cognito中实现新用户注册时自动发送邮件?

实现AWS Cognito新用户注册后自动触发邮件发送的方案

方案1:使用Cognito内置默认邮件通知(无需额外开发)

适合仅需要发送基础通知、不需要复杂自定义逻辑的场景,配置步骤如下:

  • 进入AWS控制台的Cognito用户池管理页,选择你正在使用的目标用户池
  • 切换到消息标签页,找到电子邮件配置板块
  • 先完成发件人配置:可选择使用Cognito默认的邮件发送服务,或者绑定你在AWS SES中验证过的域名/邮箱作为发件人(推荐后者,可避免邮件进入垃圾箱)
  • 往下找到注册相关的通知配置项,开启新用户注册成功通知开关
  • 你可以自定义邮件的主题、正文模板,支持插入Cognito内置变量比如{username}、{email}等动态内容
  • 保存配置后即可生效,新用户完成注册后会自动触发邮件发送,你也可以根据需求调整触发时机为用户完成邮箱验证后再发送。

方案2:使用Cognito Lambda触发器实现自定义邮件发送(适合复杂定制场景)

如果需要在邮件中插入业务自定义内容、对接第三方邮件服务,可通过Lambda触发器实现,步骤如下:

  • 提前编写自定义邮件发送Lambda函数,函数内可调用AWS SES、第三方邮件服务完成发送,示例核心代码片段(Python):
import boto3
ses = boto3.client('ses')

def lambda_handler(event, context):
    # 从Cognito触发事件中提取新用户属性
    user_email = event['request']['userAttributes']['email']
    user_name = event['request']['userAttributes']['cognito:username']
    verify_status = event['request']['userAttributes']['email_verified']
    
    # 可自定义判断逻辑,仅给已验证邮箱的用户发邮件
    if verify_status == 'true':
        ses.send_email(
            Source='你的发件人邮箱地址',
            Destination={'ToAddresses': [user_email]},
            Message={
                'Subject': {'Data': '欢迎注册我们的服务'},
                'Body': {'Text': {'Data': f'你好{user_name},感谢你完成注册,开启你的使用之旅吧!'}}
            }
        )
    # 必须返回event对象,否则会中断Cognito的后续流程
    return event
  • 进入Cognito用户池的触发器配置页,找到Post sign-up(注册后)触发器选项
  • 在下拉列表中选择你刚才创建的Lambda函数,保存配置
  • 最后配置权限:如果使用AWS SES发邮件,需要给Lambda的执行角色添加ses:SendEmail权限;如果对接第三方邮件服务,要确保Lambda所属子网可以访问公网或者对应服务的私有端点。

注意:如果你的用户池开启了注册强制验证邮箱/手机号的规则,建议在发送逻辑中增加验证状态判断,避免给无效邮箱发送冗余邮件。

内容的提问来源于stack exchange,提问作者krishnakumar Balasubramaniam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:51:03