如何通过SendGrid Python API启用保留替换标签(退订和网页查看邮件)
解决SendGrid Python API中{{Weblink}}和{{{Unsubscribe}}}标签无法生成可点击链接的问题
核心原因
这两个标签失效的本质是未正确启用SendGrid的模板引擎解析功能,导致标签被当作普通文本输出,没有被转换为可点击的HTML链接元素。
具体修复方案
1. 启用SendGrid模板引擎
在构造邮件时必须指定模板引擎类型(SendGrid默认使用Handlebars),让平台识别并处理内置标签。
2. 正确编写邮件内容与代码
{{Weblink}}:无需额外配置,启用模板引擎后,SendGrid会自动将其替换为当前邮件的网页查看链接,且默认是带<a>标签的可点击形式。{{{Unsubscribe}}}:需先在SendGrid后台(「Marketing > Unsubscribe Groups」)配置全局退订链接,再通过模板引擎解析生成可点击按钮/链接。
修正后的Python代码示例
import sendgrid from sendgrid.helpers.mail import Mail, HtmlContent, To, From, Subject # 初始化SendGrid客户端 sg = sendgrid.SendGridAPIClient(api_key='你的SendGrid API密钥') # 构造邮件基础信息 from_email = From('sender@example.com', '发件人名称') to_email = To('recipient@example.com', '收件人名称') subject = Subject('测试内置标签解析') # 包含目标标签的HTML内容 html_content = HtmlContent(""" <p>查看网页版邮件: {{Weblink}}</p> <p>如需退订请点击: {{{Unsubscribe}}}</p> """) # 构建邮件并启用模板引擎 mail = Mail(from_email, to_email, subject, html_content) mail.template_engine = 'handlebars' # 必须指定此参数,否则标签无法被解析 # 发送邮件 response = sg.send(mail) print(f"发送状态码: {response.status_code}")
额外注意事项
- 不要手动对标签进行HTML转义(比如写成
{{Weblink}}),否则SendGrid无法识别标签。 - 若使用SendGrid自定义模板,直接在模板编辑器中插入内置标签即可,无需在API代码中重复处理。
- 确认SendGrid账户已完成退订功能的基础配置,否则
{{{Unsubscribe}}}标签无法生成有效链接。
内容的提问来源于stack exchange,提问作者Eitan Rosati
相关产品推荐
相关产品推荐

