Здравствуйте, я разрабатываю приложение, которое должно отправлять почту CSS/HTML различным клиентам. Что я сделал до сих пор, так это завершил приложение и отправил все данные для хранения в Parse Cloud в виде объектов синтаксического анализа. Также сделал профиль Mandrill, загрузил нужный шаблон через MailChimp и сгенерировал API-ключ для использования в Cloud Code for Parse. Мой вопрос заключается в том, как использовать эти объекты синтаксического анализа в моей почте, чтобы содержимое почты динамически менялось (у меня есть несколько записей в таблице, которые должны меняться в соответствии с данными, введенными пользователем)? Если возможно, не могли бы вы предоставить мне пример кода JS. Я погуглил об этом, но не смог найти много документации по этой теме. Или я должен использовать некоторый API Mandrill на некоторых других языках, таких как Python? Заранее спасибо.!!
Как использовать ParseObject в шаблоне Mandrill для отправки электронных писем с динамическим содержимым?
Ответы (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());
}
}
Обратите внимание, что моя тема и информация из электронной почты установлены в почтовом шаблоне.
Чтобы предоставить более подробную информацию о руле, вы можете посетить этого сайта.
*|FNAME|*
, и я отправляю его с помощью mergeVar.setName("FNAME");
, но он не заменяет его в шаблоне, когда я получаю электронное письмо. , что ты думаешь?
- person Jad Chahine; 16.12.2016
*|FNAME|*
для языка mailchimp
, который используется по умолчанию. Вы забыли установить "merge_language": "handlebars"
, который устанавливает язык на handlebars
вместо языка по умолчанию?
- person Bahadir Tasdemir; 16.12.2016
message.setMergeLanguage("handlebars");
- person Jad Chahine; 16.12.2016
{{FNAME}}
в свой шаблон? (вместо *|FNAME|*
) правильно?
- person Bahadir Tasdemir; 16.12.2016
*|FNAME|*
, установите язык на "mergetag"
(или попробуйте не устанавливать), если {{FNAME}}
установите язык на "handlebars"
- person Bahadir Tasdemir; 16.12.2016
Вы можете включить этот сторонний модуль в свой облачный код. Он написан исключительно для того, чтобы упростить отправку в темпальте.
https://github.com/jlainog/parse-mandrill-sendTemplate