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

使用Amazon SES PHP发邮件时模板URL内{{values}}变量未替换问题咨询

Amazon SES 模板URL内变量替换失效修复方案

根因

Amazon SES 模板采用 Handlebars 渲染引擎,仅识别并替换未被HTML实体编码的{{变量名}}占位符。URL属性内的占位符替换失效,通常是模板上传阶段占位符被自动编码为%7B%7B变量名%7D%7D导致,SES无法识别编码后的占位符,因此不会执行替换。同时SES仅校验模板文本区域声明的变量是否传入,属性内未识别的占位符不会触发必填校验,因此会出现文本变量替换正常、URL变量不生效、缺失URL变量不会导致发送失败的现象。

修复步骤

  • 重新上传SES模板,确保模板HTML部分的链接代码未做额外实体编码,正确写法示例:
    <a href="https://example.com/register.php?id={{userid}}">Register</a>
    
    注意不要对{{userid}}做URL编码,也不要对整个href属性值做HTML实体转义后再存入SES模板。
  • 检查ReplacementTemplateData的JSON格式是否正确,变量名和占位符完全匹配(大小写敏感),PHP传参参考写法:
    'ReplacementTemplateData' => json_encode([
        'userid' => $userId
    ])
    
  • 若URL中传递的变量包含特殊字符,使用Handlebars非转义语法{{{变量名}}},避免变量值被自动转义导致URL失效,示例:
    <a href="https://example.com/register.php?id={{{userid}}}">Register</a>
    

验证方法

使用SES控制台的「发送测试邮件」功能,选择对应模板,传入测试参数{"userid":"12345"},查看收到的邮件链接是否完成替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:09:03