mc:edit 在带有 Mandrill Javascript API 的 Mailchimp 模板中不起作用

Posted

技术标签:

【中文标题】mc:edit 在带有 Mandrill Javascript API 的 Mailchimp 模板中不起作用【英文标题】:mc:edit do not work in Mailchimp template with Mandrill Javascript API 【发布时间】:2014-12-06 05:04:16 【问题描述】:

我正在尝试通过带有 Mailchimp 模板的 Mandrill API 发送电子邮件。我正在使用 Parse.com 在云代码中执行此操作,请参阅此处https://www.parse.com/docs/cloud_modules_guide#mandrill。电子邮件发送得很好,但是 mc:edit 字段永远不会更新。这是模板中现在唯一的内容:

<span mc:edit="ship_id">ship_id</span>

这就是我在 javascript 中调用的样子,希望有人能看到我的错误。如果这有什么不同,我将在 Parse.com 云代码中运行它。非常感谢!

var Mandrill = require('mandrill');
Mandrill.initialize('api-key');

Mandrill.sendTemplate(
    template_name: "Drip campaign",
    template_content: [
        name: "ship_id",
        content:"Test Test"

    ],

    message: 
      text: "Hi",
      subject: "You have new mail",
      from_email: "info@example.com",
      from_name: "Thomas",
      to: [
        
          email: "answer@example.com",
          name: "Fred"
        
      ],
      "headers": 
          "Reply-To": "answer@example.com"
      ,
      "important": false,
      "track_opens": true,
      "track_clicks": true,

    ,
    async: true
    ,
    success: function(httpResponse) 

      response.success("Email sent!");
    ,
    error: function(httpResponse) 
      console.error(httpResponse);
      response.error("Uh oh, something went wrong");
    
  );

【问题讨论】:

亲爱的马吕斯;我认为 sendTemplate 在另一个 js 文件中,我看不到这个 js 文件的导入(需要)。你能检查一下吗? 你能检查一下之前的评论吗?如果这不能解决您的问题,那么我可以提供一些代码,您可以在其中更新 mc:edit 字段。问候。 嗨 kingspeech,我实际上正在使用 Parse API,我相应地更新了我的问题。 【参考方案1】:

好的,所以我的代码没有任何问题,但似乎模板没有从 Mailchimp 正确发送到 Mandrill,因为添加了诸如 |NAME| 之类的字段用于合并标记或 mc:edit ="name" 只是没有填充。至少 Mailchimp 模板的代码很奇怪,而且非常嵌套。

因此,我建议在此处使用您自己的 html,您可以在其中输入合并标记或 mc:edits https://mandrillapp.com/templates/。

【讨论】:

亲爱的 Marius, 抱歉回复晚了。如果有人再次需要,我会更新我的答案。希望你能解决你的问题。问候。【参考方案2】:

据我了解,您希望在发送电子邮件的同时动态编辑邮件内容。正如您已经使用过的那样,您可以通过 Mandrill API 来完成。我建议你使用链接中可以下载的js文件;

https://github.com/jlainog/parse-mandrill-sendTemplate

在github账号的js文件中,你可以通过标签mc:edit动态编辑邮件内容(必须在你的模板中)。

对于我的情况,代码的工作副本如下;

Parse.Cloud.define("sendMail", function(request, response) 
    var Mandrill = require('cloud/mandrillSend.js');

    var sentTo = //Mail address to sent
    var subject = //Mail Subject
    var fromEmail = //From email
    var fromName = //From Name
    var sentToName = //Parameters from request
    var fullName = //Full Name

    Mandrill.initialize('YOUR MANDRILL API KEY');
    Mandrill.sendTemplate(
        template_name: "MANDRIL TEMPLATE",
        template_content: [
        
             name: "nameHeader",
             content: sentToName,
        ,
         
                name: "mail",
                content: sentTo,
        ,
        ],
        "key": "YOUR MANDRILL API KEY",
        message: 
                subject: subject,
                from_email: fromEmail,
                from_name: fromName,
            to: [
                email: sentTo,
                name: fullName
            ],
            important: true
        ,
        async: false
    , 
        success: function (httpResponse) 
            console.log(httpResponse);
            response.success("Email sent!");
        ,
        error: function (httpResponse) 
            console.error(httpResponse);
            response.error("Uh oh, something went wrong");
        
    );
);

例如,在 Mandrdil Template 中有一个带有 id 的 span;

<span mc:edit="mail"> test@gmail.com</span>

希望这会有所帮助。 问候。

【讨论】:

亲爱的 Marius,当新用户注册到系统时,我正在使用 mandrill 发送模板 js 文件发送邮件。如果您无法解决问题,请通知我,以便我提供一些代码。问候。 感谢 kindpeech,我会试试的。但是,该代码来自哪里。我只是想知道为什么不能让它像 Parse API 中描述的那样工作,但必须与导出函数和所有东西一起使用。 亲爱的 Marius,和你一样,在其中一个项目中,当新用户注册到系统时,我需要发送一封电子邮件。我继续 Parse 教程,但我无法发送带有动态更改字段的电子邮件。然后我查看 Parse 博客,其中一个博客条目指向链接 mandrill-sendTemplate。然后我成功发送电子邮件。所以我想和你分享。希望你能解决你的问题。如果你不能告诉我,我可以和你分享代码。问候。 嘿 kingspeech,它仍然不起作用。电子邮件发送得很好,但是 mc:edit 字段永远不会改变。知道我现在应该做什么吗? 是否可能需要对 main.js 的第 9 行中的注释做一些事情//那些是必需的,但它们被忽略了?

以上是关于mc:edit 在带有 Mandrill Javascript API 的 Mailchimp 模板中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Mandrill API 模板

mandrill 模板电子邮件中的动态 html

mailchimp 模板导出到带有合并标签的山魈问题

MailChimp API - 动态内容 - mc:repeatable + mc:edit

Mailchimp 可重复部分名称

带有 Heroku 的 Rails 不发送 Mandrill 电子邮件