公司动态

如何用campaign实现收件人个性化:merge变量与一键退订完整指南

📅 2026/8/23 11:40:28
如何用campaign实现收件人个性化:merge变量与一键退订完整指南
如何用campaign实现收件人个性化merge变量与一键退订完整指南【免费下载链接】campaign:love_letter: Compose responsive email templates easily, fill them with models, and send them out.项目地址: https://gitcode.com/gh_mirrors/ca/campaign 想让每封邮件都叫出收件人的名字吗campaign是一个 Node.js 邮件模板工具包帮你轻松编写响应式邮件模板、用数据模型填充并发送。它内置的merge 变量merge variables机制让你用一套模板给不同收件人生成个性化内容还能通过unsubscribe_html一键接入退订链接告别各邮件服务商 API 的差异烦恼。本教程带你从零掌握这两大功能。为什么需要收件人个性化批量发送时亲爱的 {{用户名}} 这样的称呼能显著提升打开率。而根据反垃圾邮件法规每封营销邮件都必须提供退订入口——手动给每人拼链接既不现实也易出错。campaign 的解决思路很聪明把收件人专属数据交给邮件服务商Mandrill、Mailgun、SparkPost在发送时替换模板里只写占位符。效果就像下图这样一封由 campaign 默认布局渲染出的真实邮件快速上手安装并创建client通过 npm 安装即可仓库地址https://gitcode.com/gh_mirrors/ca/campaign npm i --save campaign然后构建一个客户端指定模板引擎和邮件服务商var client require(campaign)({ templateEngine: require(campaign-mustache), provider: require(campaign-mailgun)({ apiKey: key-12rvasxx }) }); client.send(template, options, done); // 用模板文件发送 client.sendString(pHi {{name}}/p, options, done); // 用字符串发送.send接收模板文件路径带编译缓存.sendString接收模板字符串每次编译见 emailService.js。merge变量一套模板千人千面这是本教程的核心。发送邮件时在 options 里传入provider.merge对象以收件人邮箱为键该收件人专属的变量为值var options { to: [someoneaccounting.is, someone.elseaccounting.is], subject: Your invoice is ready, provider: { merge: { someoneaccounting.is: { name: Alice }, someone.elseaccounting.is: { name: Bob }, *: { company: Acme Inc } // 通配符所有人的默认值 } } };三个要点要点说明 按邮箱分键每个收件人的变量值独立互不干扰⭐ 通配符*作为默认值当某收件人缺少某变量时自动填充 服务商端替换占位符由 Mandrill / Mailgun / SparkPost 在发送时替换模板保持干净在模板中引用变量支持两种写法语法与服务商无关统一好用{{name}}—— 自动转义文本内容用这个推荐{{{html_snippet}}}—— 原样嵌入适合插入 HTML 片段pHi {{name}}, your invoice for {{company}} is attached./p发送后Alice 会收到 Hi Alice, your invoice for Acme Inc...Bob 收到自己的版本——一份模板N 份个性化邮件。一键退订让 unsubscribe_html 自动出现在页脚campaign 的默认布局原生支持退订只要给对应收件人传入unsubscribe_html变量退订链接就会自动渲染到每封邮件的页脚无需修改布局。provider: { merge: { someonesomewhere.com: { unsubscribe_html: a hrefhttp://sth.ng/unsubscribe/hash_for_someoneunsubscribe/a }, someoneelse.com: { unsubscribe_html: a hrefhttp://sth.ng/unsubscribe/hash_for_otherunsubscribe/a } } }实现原理只要检测到 options 中存在provider.mergecampaign 就会把{{{unsubscribe_html}}}注入布局模型由默认布局渲染进页脚逻辑见 templateService.js。这正是用 merge 变量代替各服务商原生退订 API的设计初衷——一套写法全服务商通用。⚠️ 注意merge 变量依赖服务商支持Mandrill、Mailgun、SparkPost 开箱即用并非所有 provider 都支持。调试技巧trap与terminal provider发送真实邮件前先用这两个工具兜底避免发错trap选项设为true时邮件完全不发出设为某个邮箱时所有邮件都改发到该地址适合测试。trap 模式下邮件末尾还会附一段 JSON列出原本应发往的收件人方便核对 merge 数据。campaign-terminalprovider不真正发邮件而是在终端输出邮件的 Markdown 和 JSON开发调试利器。var client require(campaign)({ provider: require(campaign-terminal) // 只在终端打印不发送 });常见问题速查问题解答占位符没被替换确认所选 provider 支持 merge 变量Mandrill / Mailgun / SparkPost想给所有人统一变量用merge中的*键作为默认值页脚没有退订链接确保传入了provider.merge且给收件人提供unsubscribe_html担心误发真实邮件开发期使用trap或campaign-terminalprovider总结campaign用极简的 API 解决了邮件个性化的两件大事provider.merge让一套模板自动适配所有收件人unsubscribe_html让退订链接一键到位。配合默认响应式布局、CSS 内联和纯文本版本生成你基本不需要操心邮件兼容性的琐碎细节——把精力放在内容上就好。 上手三步走安装 campaign → 用provider.merge定义收件人变量 → 在页脚传入unsubscribe_html个性化营销邮件即刻就绪。【免费下载链接】campaign:love_letter: Compose responsive email templates easily, fill them with models, and send them out.项目地址: https://gitcode.com/gh_mirrors/ca/campaign创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考