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

如何禁用AWS Cognito的默认邮件发送功能?

禁用AWS Cognito注册默认邮件并自定义验证流程

一、AWS控制台配置步骤

  1. 登录AWS控制台,打开Cognito服务,选中你的目标用户池
  2. 点击左侧菜单栏的验证选项
  3. 在「电子邮件验证」区域,将「发送验证邮件」的下拉选项改为不发送
  4. 点击页面底部「保存更改」

二、代码调整实现自定义验证逻辑

禁用Cognito自动邮件后,需自行处理邮箱验证流程,确保用户完成账号激活。以下是适配后的代码示例:

import { Auth } from "aws-amplify"
import { SendTemplatedEmailCommand } from "@aws-sdk/client-ses"

const handleRegister = async () => {
  try {
    // 注册用户,此时Cognito不会自动触发验证邮件
    const { user } = await Auth.signUp({
      username: formik.values.email,
      password: formik.values.password,
    })

    // 构造自定义邮件数据,这里以包含后端验证链接为例
    const emailData = {
      userEmail: formik.values.email,
      verifyLink: `https://your-app-domain.com/verify?email=${encodeURIComponent(formik.values.email)}`
    }

    // 通过SES发送自定义验证邮件
    const emailCommand = new SendTemplatedEmailCommand({
      Destination: { ToAddresses: [formik.values.email] },
      TemplateData: JSON.stringify({ data: emailData }),
      Source: "verified@email.com",
      Template: "welcome",
    })
    await client.send(emailCommand)

    formik.resetForm()
    notification.success({ message: "注册成功,请查收邮件完成账号验证" })
  } catch (e) {
    notification.error({ message: e.message })
  }
}

// 邮箱验证处理函数(后端或前端调用,完成Cognito账号确认)
const confirmEmailVerification = async (email, confirmationCode) => {
  try {
    await Auth.confirmSignUp(email, confirmationCode)
    notification.success({ message: "邮箱验证成功,可正常登录" })
  } catch (e) {
    notification.error({ message: e.message })
  }
}

关键说明

  • 用户池App客户端需确保开启sign_up和confirm_sign_up权限
  • 若使用验证链接,建议通过后端处理确认请求,避免前端直接执行敏感操作
  • 自定义邮件模板需清晰告知用户验证步骤,比如点击链接跳转至验证页面,或提示输入验证码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:07:45