Как использовать ParseObject в шаблоне Mandrill для отправки электронных писем с динамическим содержимым?

Здравствуйте, я разрабатываю приложение, которое должно отправлять почту CSS/HTML различным клиентам. Что я сделал до сих пор, так это завершил приложение и отправил все данные для хранения в Parse Cloud в виде объектов синтаксического анализа. Также сделал профиль Mandrill, загрузил нужный шаблон через MailChimp и сгенерировал API-ключ для использования в Cloud Code for Parse. Мой вопрос заключается в том, как использовать эти объекты синтаксического анализа в моей почте, чтобы содержимое почты динамически менялось (у меня есть несколько записей в таблице, которые должны меняться в соответствии с данными, введенными пользователем)? Если возможно, не могли бы вы предоставить мне пример кода JS. Я погуглил об этом, но не смог найти много документации по этой теме. Или я должен использовать некоторый API Mandrill на некоторых других языках, таких как Python? Заранее спасибо.!!


person VIshu Kamble    schedule 10.09.2014    source источник


Ответы (2)


в настоящее время я пробую сторонний API Mandrill Java, и я думаю, что это полный ответ для вас:

Теперь я собираюсь описать вам, как использовать руль шаблонов 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:

{
  "key" : "[api_key]",
  "message" : {
    "to" : [ {
      "email" : "[email protected]",
      "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, который использует этот сторонний API Java:

public void testTemplateMail() {
    try {
        MandrillMessage message = new MandrillMessage();

        //Set recipient
        ArrayList<Recipient> recipients = new ArrayList<Recipient>();
        Recipient recipient = new Recipient();
        recipient.setEmail("[email protected]");
        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());
    }
}

Обратите внимание, что моя тема и информация из электронной почты установлены в почтовом шаблоне.

Чтобы предоставить более подробную информацию о руле, вы можете посетить этого сайта.

person Bahadir Tasdemir    schedule 28.05.2016
comment
Спасибо за ваш ответ, но я не могу установить теги слияния в своем шаблоне, поэтому в моем шаблоне мандрилла у меня есть тег слияния *|FNAME|*, и я отправляю его с помощью mergeVar.setName("FNAME");, но он не заменяет его в шаблоне, когда я получаю электронное письмо. , что ты думаешь? - person Jad Chahine; 16.12.2016
comment
Я помню, что *|FNAME|* для языка mailchimp, который используется по умолчанию. Вы забыли установить "merge_language": "handlebars", который устанавливает язык на handlebars вместо языка по умолчанию? - person Bahadir Tasdemir; 16.12.2016
comment
Да, я устанавливаю message.setMergeLanguage("handlebars"); - person Jad Chahine; 16.12.2016
comment
Вы пытались установить {{FNAME}} в свой шаблон? (вместо *|FNAME|*) правильно? - person Bahadir Tasdemir; 16.12.2016
comment
Если вы используете *|FNAME|*, установите язык на "mergetag" (или попробуйте не устанавливать), если {{FNAME}} установите язык на "handlebars" - person Bahadir Tasdemir; 16.12.2016
comment
Без настройки языка у меня работает, спасибо. - person Jad Chahine; 16.12.2016

Вы можете включить этот сторонний модуль в свой облачный код. Он написан исключительно для того, чтобы упростить отправку в темпальте.

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

person Abdul Vajid    schedule 10.02.2015