如何为Amazon Cognito注册验证邮件配置密送(BCC)收件人?
Amazon Cognito验证邮件添加BCC的解决方案
首先明确:Cognito和SES都没有直接配置给默认验证邮件添加BCC的选项,不管是控制台设置还是官方API,都不支持直接给Cognito自动发送的验证邮件加BCC收件人。
下面是两种可行的替代方案:
方案一:自定义验证邮件流程(完全控制邮件内容和收件人)
- 关闭Cognito用户池的自动验证邮件功能:在用户池的「MFA和验证」设置里,禁用「发送验证邮件」选项
- 用户注册时,通过Cognito API(比如
SignUp)提交信息后,自行生成验证验证码,将验证码存储到用户的自定义属性中(比如custom:verificationCode) - 调用Amazon SES的
SendEmail或SendTemplatedEmail接口发送验证邮件,此时可以自由指定收件人(To)、抄送(CC)和密送(BCC),完全自定义邮件内容 - 用户输入验证码后,调用Cognito的
ConfirmSignUp接口完成验证,同时验证自定义属性里的验证码是否匹配
方案二:用户验证后通过Lambda触发合规邮件(不改动原有验证流程)
你考虑的这个方案是可行的,具体步骤:
- 在Cognito用户池的「触发器」设置里,启用Post Confirmation触发器,关联一个Lambda函数
- 当用户成功验证邮箱并完成注册后,Cognito会触发这个Lambda函数,函数可以获取到用户的邮箱、用户ID等信息
- 在Lambda函数中,调用Amazon SES发送包含合规信息的邮件,将合规部门的邮箱添加到BCC中;或者直接单独给合规收件人发送一份记录邮件
- 这种方式不需要修改原有的验证流程,只是在验证完成后补充发送合规相关邮件,满足合规留痕需求
注意事项
- 用SES发送邮件时,确保发件地址已经在SES中完成验证,且SES账户处于生产模式,避免邮件被标记为垃圾邮件
- Lambda函数需要配置相应的权限:比如允许读取Cognito用户属性、允许调用SES发送邮件的权限
- 自定义验证流程时,要给验证码设置合理的过期时间,防止被滥用
内容的提问来源于stack exchange,提问作者cpatppa
相关产品推荐
相关产品推荐

