SendGrid退订链接不可点击,使用动态模板与退订组配置出错求助
SendGrid动态模板退订链接无法点击的问题原因及解决方案
核心错误点
你现有配置的核心问题是混淆了SendGrid不同模板类型的变量替换规则,且多余手动传递了系统自动生成的退订链接变量,具体问题如下:
- 不需要手动在
dynamic_template_data中定义退订链接变量
SendGrid的动态模板会自动识别ASM(退订组)相关的系统变量,不需要你手动传<%asm_group_unsubscribe_url%>这个值。这个<%%>格式是旧版遗留模板的变量语法,放到动态模板场景下不会被解析,只会被当成普通字符串传递给你自定义的asmGroupUnsubscribeUrl变量,最终导致链接地址是无效字符串。 - 模板引用方式错误
不需要通过你自定义的asmGroupUnsubscribeUrl间接引用退订链接,动态模板支持直接调用系统内置变量。
修正后的配置
1. 删掉多余的dynamic_template_data配置
把你dynamic_template_data里的"asmGroupUnsubscribeUrl": "<%asm_group_unsubscribe_url%>"整行删除即可,不需要保留:
dynamic_template_data = { # 你原来的其他业务变量,比如用户名、邮件内容之类的 # 不需要加asm相关的链接变量 }
2. 直接调整动态模板的HTML代码
模板里直接调用系统内置的退订组链接变量即可,不需要任何自定义参数传递:
<a href="{{asm_group_unsubscribe_url}}">Unsubscribe</a>
3. 保留你原有的ASM参数配置
你请求里传入的asm配置是正确的,保持即可(注意把group_id换成你SendGrid后台实际创建的退订组真实ID,不要用测试值111):
data = {"personalizations": [{ "to": [ { "email": email } ], "dynamic_template_data": dynamic_template_data, "asm": { "group_id": 你的真实退订组ID, "groups_to_display": [你的真实退订组ID], }, } # 其余原有配置保持不变 }
可选补充
如果需要其他退订相关能力,直接在模板里调用对应系统变量即可:
- 全局退订链接:
{{asm_global_unsubscribe_url}} - 订阅偏好管理页链接:
{{asm_preferences_url}}
内容的提问来源于stack exchange,提问作者Luff li
相关产品推荐
相关产品推荐

