如何在Mandrill模板中使用ParseObject发送动态内容电子邮件?

时间:2014-09-10 05:18:16

标签: java javascript android parse-platform mandrill

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

2 个答案:

答案 0 :(得分:1)

目前我正在尝试使用Mandrill Java第三方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 call一起使用:

{
  "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网站。

答案 1 :(得分:0)

您可以在云代码中包含此第三方模块。它专门用于使tempalte发送变得容易。

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