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

如何通过CLI为Amplify Cognito的emailVerificationMessage设置HTML模板

Amplify CLI 配置Cognito验证邮件HTML内容的可行方案

默认情况下,通过Amplify CLI直接传入emailVerificationMessage的内容会被自动做纯文本转义,HTML标签会被直接转成普通字符显示,无法正常渲染为富文本,所以会出现配置不生效的情况。可通过以下三种方案实现需求:

方案1:修改Amplify项目本地配置文件后推送

该方案配置会跟随Amplify项目做版本管理,后续推送不会被覆盖,适合常规HTML需求:

  • 进入你的Amplify项目的amplify/backend/auth/<你的认证资源名>/目录,打开parameters.json文件
  • 找到emailVerificationMessage字段,直接写入你需要的完整HTML内容,注意内容中的双引号需要转义为\",示例如下:
    "emailVerificationMessage": "<p>欢迎注册我们的服务,你的验证码是:<strong>{####}</strong>,请在15分钟内完成验证</p>"
    
    注意内容里的{####}是Cognito的内置占位符,会自动替换为实际生成的验证码
  • 同步修改emailVerificationSubject字段配置邮件主题
  • 保存文件后,在项目根目录执行amplify push,等待资源推送完成即可生效

方案2:直接通过AWS CLI更新Cognito用户池配置

适合临时快速调整,不需要改动Amplify本地配置的场景:

  • 首先获取你的Cognito用户池ID,可在AWS控制台Cognito页面查看,或执行amplify status找到auth资源对应的用户池ID
  • 执行以下命令,替换尖括号里的参数为你自己的内容:
    aws cognito-idp update-user-pool --user-pool-id <你的用户池ID> --auto-verified-attributes email --verification-message-template "EmailMessage=<p>你的验证码是<strong>{####}</strong></p>,EmailSubject=验证你的邮箱地址"
    
  • 注意如果HTML内容里有空格或者特殊字符,需要用引号把整个verification-message-template的参数值完整包裹
  • 该方案改动即时生效,但如果之后执行amplify push时auth部分有更新,该配置可能被Amplify的默认配置覆盖,需要重新执行

方案3:使用Cognito自定义消息Lambda触发器

适合HTML内容复杂度高、需要动态渲染自定义内容的场景:

  • 执行amplify add function,创建一个Node.js运行环境的Lambda函数,权限选择关联Cognito用户池
  • 在Lambda函数代码中处理CustomMessage_SignUp事件,返回你需要的HTML内容,代码示例:
    exports.handler = (event, context, callback) => {
      // 匹配注册验证邮件的触发场景
      if (event.triggerSource === 'CustomMessage_SignUp') {
        event.response.emailSubject = "欢迎注册我们的服务";
        event.response.emailMessage = `
        <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;">
          <h2>感谢你的注册</h2>
          <p>你的邮箱验证码是:<span style="color: #2563eb; font-size: 20px; font-weight: bold;">${event.request.codeParameter}</span></p>
          <p>验证码有效期为15分钟,请勿泄露给他人</p>
        </div>
        `;
      }
      callback(null, event);
    };
    
  • 执行amplify push推送资源后,在Cognito用户池的触发器设置中,将自定义消息触发器绑定到你刚创建的Lambda函数即可
  • 该方案支持任意复杂度的HTML样式,还可以动态插入用户属性等自定义内容,配置不会被Amplify推送覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:48:03