【问题标题】:How to Use ParseObject in a Mandrill Template to send dynamic content emails?如何在 Mandrill 模板中使用 ParseObject 发送动态内容电子邮件?
【发布时间】:2014-11-03 15:39:38
【问题描述】:

您好,我正在设计一个需要向各种客户端发送 CSS/HTML 邮件的应用程序。到目前为止,我所做的是完成应用程序并将所有要存储在 Parse Cloud 中的数据作为解析对象发送。还制作了 Mandrill 配置文件,通过 MailChimp 上传所需的模板并生成 API 密钥以用于 Cloud Code for Parse。我的查询是如何在我的邮件中使用这些解析对象,以便邮件内容动态变化(我的邮件中的表条目很少,应该根据用户输入的数据进行更改)?如果可能的话,你能给我提供示例 JS 代码吗?我对此进行了 Google 搜索,但找不到与该主题相关的太多文档。 或者我应该在 Python 等其他语言中使用一些 Mandrill API? 提前致谢!!

【问题讨论】:

    标签: java javascript android parse-platform mandrill


    【解决方案1】:

    目前我正在试用 Mandrill Java 3rd 方 API,我认为这是您的完整答案:

    我现在将向您描述如何使用 Mandrill 模板的把手:

    假设这是我在 Mandrill 帐户中名为“my_test_template”的模板:

    <!DOCTYPE html PUBLIC>
    <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
        <title>Test Template Email</title>
      </head>
      <body>
        <p> Hello my name is {{name_placeholder}} and this is the test template.</p>
      </body>
    </html>
    

    通常,要为“name_placeholder”设置动态内容,您必须将此 json 对象与 javascript rest 调用一起使用:

    {
      "key" : "[api_key]",
      "message" : {
        "to" : [ {
          "email" : "someone@something.com",
          "name" : "Someone"
        } ],
        "merge" : true,
        "global_merge_vars" : [ {
          "name" : "name_placeholder",
          "content" : "Someone"
        } ],
        "merge_vars": [],
        "async" : false
      },
      "template_name" : "my_test_template",
      "template_content" : [],
      "merge_language": "handlebars"
    }
    

    这里你必须注意的是“merge_language”。如果您使用车把,则仅受“车把”语言支持。如果您不设置此数据,它将使用默认语言“mailchimp”,并且您的动态内容不会被替换。

    要提供此功能,您可以使用以下使用此 Java 3rd party API 的 java 代码:

    public void testTemplateMail() {
        try {
            MandrillMessage message = new MandrillMessage();
    
            //Set recipient
            ArrayList<Recipient> recipients = new ArrayList<Recipient>();
            Recipient recipient = new Recipient();
            recipient.setEmail("someone@something.com");
            recipient.setName("Someone");
            recipients.add(recipient);
            message.setTo(recipients);
            message.setPreserveRecipients(true);
    
            //Set global merge vars
            List<MergeVar> globalMergeVars = new ArrayList<>();
            MergeVar mergeVar = new MergeVar();
            mergeVar.setName("name_placeholder");
            mergeVar.setContent("Someone");
            globalMergeVars.add(mergeVar);
            message.setGlobalMergeVars(globalMergeVars);
    
            //Set merge language (*important)
            message.setMergeLanguage("handlebars");
    
            //You must provide at least an empty template content
            Map<String, String> template_content = new HashMap<>();
    
            //Send mail
            MandrillMessageStatus[] messageStatusReports = mandrillApi
                    .messages().sendTemplate("my_test_template", template_content, message, false);
            if (messageStatusReports != null && messageStatusReports.length > 0) {
                logger.info("Mail sent info: " + messageStatusReports[0].getStatus());
            }
        } catch (MandrillApiError e) {
            logger.error(e.getMessage());
        } catch (IOException e) {
            logger.error(e.getMessage());
        }
    }
    

    请注意,我的主题和发件人电子邮件信息设置为邮件模板。

    如需了解更多关于车把的详细信息,您可以访问this 网站。

    【讨论】:

    • 感谢您的回答,但我无法在我的模板中设置合并标签,因此在我的 mandrill 模板中我有一个合并标签 *|FNAME|*,我使用 mergeVar.setName("FNAME"); 发送它但它我收到邮件时没有在模板中替换它,你怎么看?
    • 我记得*|FNAME|* 是默认语言mailchimp。您是否忘记设置 "merge_language": "handlebars" 将语言设置为 handlebars 而不是默认语言?
    • 是的,我正在设置message.setMergeLanguage("handlebars");
    • 您是否尝试将{{FNAME}} 设置为您的模板? (而不是*|FNAME|*)对吗?
    • 如果你使用*|FNAME|*,设置语言为"mergetag"(或尽量不设置),如果{{FNAME}}设置语言为"handlebars"
    【解决方案2】:

    您可以将此第 3 方模块包含在您的云代码中。它是专门为简化模板发送而编写的。

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

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 2013-06-22
      • 2015-08-30
      • 2013-10-26
      • 2015-05-09
      • 2013-07-31
      • 2016-08-13
      • 2017-09-22
      • 1970-01-01
      相关资源
      最近更新 更多