如何在SendGrid自定义退订HTML中显示待退订用户邮箱
解决SendGrid退订页面无法显示用户邮箱的问题
我之前也踩过SendGrid退订页面的这个坑!试了好几个占位符都没显示出用户邮箱,后来折腾了半天终于找到了解决办法,给你几个可行的方案:
方案1:用SendGrid退订页专属变量
如果你是在SendGrid后台「Settings > Unsubscribe Settings」里配置的退订HTML内容,其实官方有个专门的变量{{email}}能直接渲染当前待退订用户的邮箱。不过要注意两个关键点:
- 这个变量只对SendGrid自动生成的退订链接生效——也就是你邮件里用
{{unsubscribe_url}}占位符生成的链接,因为SendGrid会在生成链接时绑定收件人的邮箱上下文。 - 像
{{recipient.email}}或者{{contact.email}}这类变量,只在动态邮件模板里有用,放到退订着陆页的配置里是不生效的。
方案2:自定义退订链接并手动传邮箱参数
如果方案1没起作用,大概率是你的退订链接没正确携带邮箱信息,这时候可以手动加参数解决:
- 在发送邮件的模板里,把退订链接改成这样:
https://你的退订页面域名?email={{recipient.email}}——这里的{{recipient.email}}是SendGrid动态模板的变量,发送时会自动替换成收件人的真实邮箱。 - 在你的退订HTML里加一段JS来获取并显示这个参数:
// 从URL里提取email参数 const urlParams = new URLSearchParams(window.location.search); const userEmail = urlParams.get('email'); // 把邮箱插入到页面指定位置 if (userEmail) { document.getElementById('user-email').textContent = userEmail; }
然后在HTML里预留一个显示位置:
<p>你要退订的邮箱是:<span id="user-email"></span></p>
方案3:检查批量发送时的个性化数据
如果你是通过API批量发邮件,一定要确保请求里给每个收件人都传了personalizations字段的邮箱信息,不然SendGrid识别不出当前用户,自然没法渲染变量。比如API请求结构得包含:
{ "personalizations": [ { "to": [{"email": "user1@example.com"}], "dynamic_template_data": {"email": "user1@example.com"} } ] }
最后给个小建议:如果还是不行,先简化测试——在退订设置里只写<p>你的邮箱:{{email}}</p>,然后发测试邮件给自己,点退订链接看看能不能正常显示,这样能排除复杂HTML的干扰。
内容的提问来源于stack exchange,提问作者galactic.nucleus
相关产品推荐
相关产品推荐

