Mailchimp/Mandrill 和 Handlebars 更改预览文本
Posted
技术标签:
【中文标题】Mailchimp/Mandrill 和 Handlebars 更改预览文本【英文标题】:Mailchimp/Mandrill and Handlebars changing preview text 【发布时间】:2020-11-01 06:21:24 【问题描述】:我正在与 MailChimps Mandrill 合作使用把手发送跨国电子邮件。整个设置已完成,电子邮件发送得非常好 - 但当它们到达时,它们仍然具有用于预览文本的默认 Mailchimp 模板字符串,如下所示:
|*MC_PREVIEW*|
有没有人知道有一种方法可以将其从显示中删除或更改?目前我必须进入 Mandrill 中的电子邮件代码并自己删除代码块 - 想知道 Mailchimps 是否有办法做到这一点,因为每次更新和导出电子邮件模板时都会有点乏味让 Mandrill 进去再把它取下来。
提前致谢!
【问题讨论】:
【参考方案1】:我们遇到了同样的问题并编写了一个小的 lambda http endoint,我们可以通过 slack 集成触发它来修复我们所有的 mandrill 模板:
const mailchimpFactory = require('@mailchimp/mailchimp_transactional');
const mailchimp = mailchimpFactory(process.env.MAILCHIMP_API_KEY);
function fixTemplate( name, code )
const regex = /\*\|MC_PREVIEW_TEXT\|\*/ig; // regexr.com/69390
const fixedBody = code.replace(regex, '');
console.log(`Updating $name`);
return mailchimp.templates.update(
name,
code: fixedBody,
);
// removes all mailchimp preview merge variables from all
// templates in mandrill (since we're using handlebars)
async function fixAllTemplates(event)
const templates = await mailchimp.templates.list();
await Promise.all(templates.map(fixTemplate));
const templateList = templates.map(( name ) => `\n> $name`).join('');
const msg = `*Mandrill Template Fixer:* Updated $templates.length templates. $templateList`;
console.log(msg);
return statusCode: 200, body: msg ;
module.exports = fixAllTemplates ;
【讨论】:
【参考方案2】:我遇到过这个问题,首先将 Mandrill 默认合并标签更改为 Handlebars,然后将模板从 Mailchimp 重新导出回 Mandrill。
这会将电子邮件代码中的所有 *|Mailchimp|* 样式合并标签转换为 handlebars 样式。
重要修改:
如果您的 Mailchimp 模板使用把手来定义合并标签,这些将像这样被转义:
\mergeTag
您要么必须手动删除这些反斜杠以使标签再次工作,要么在导出前将 Mailchimp 中的合并标签重新格式化为 *|MAILCHIMP|* 样式。
如果选择后者,在将驼峰式合并标签转换为 Mailchimp 样式时,只需将其全部大写即可。
例如mergeTag 变为 *|MERGETAG|*
【讨论】:
非常感谢 Jamie,下次需要进行一些更改时我会尝试一下 看看我的编辑 - 我添加了一些额外的信息,您需要避免破坏您的模板!以上是关于Mailchimp/Mandrill 和 Handlebars 更改预览文本的主要内容,如果未能解决你的问题,请参考以下文章
MailChimp (Mandrill) for .NET 为啥电子邮件包含图像?
将 Mailchimp/Mandrill 与 Ruby 结合使用