Создан бизнес процесс, там есть активи, в нем есть выбор шаблона письма. После чего я создаю рассылку, но как можно после отправки вытащить готовое письмо или перед отправкой с заполненными макросами? Суть в том, что надо именно делать рассылку, а не отправлять письмо, но просто полученный шаблон (который найден по id на основании выбранного шаблона из формы), с не заполненными макросами.
То есть после отправки письма, срабатывает какое-то событие отправки, которое где-то получает готовое письмо с заполненными макросами, вопрос как его получить.
if (!Loader::includeModule('sender')) {
return;
}
$message = '';
$mailingId = 1;
$subject = 'Тестовая тема';
$arrMailTmp = Bitrix\Sender\TemplateTable::onPresetTemplateList($templateType = null, $mailingId);
$mailTmp = $arrMailTmp[0]['FIELDS']['MESSAGE']['VALUE'];
$letter = Bitrix\Sender\Entity\Letter::createInstanceById($mailingId, array('mail'));
if (!$letter || !is_object($letter)) {
ShowError(Security\AccessChecker::getMessage(Security\AccessChecker::ERR_CODE_NOT_FOUND));
}
$emailFrom = filter_var('1@yahoo.com', FILTER_VALIDATE_EMAIL);
$emailTo = filter_var('2@yahoo.com', FILTER_VALIDATE_EMAIL);
$data = array(
'TITLE' => 'Тестовая рассылка',
'TEMPLATE_ID' => $mailingId,
'MESSAGE_CODE' => 'mail',
'IS_TRIGGER' => 'N',
'EMAIL_FROM' => $emailFrom,
'EMAIL_TO' => $emailTo,
'NAME' => '<html><body>Текст письма</body></html>',
);
//if(!$letter->getId()) {
// $data['CAMPAIGN_ID'] = Entity\Campaign::getDefaultId();
// $data['CREATED_BY'] = Security\User::current()->getId();
//}
$letter->mergeData($data);
$message = $letter->getMessage();
$configuration = $message->getConfiguration();
//$templateType = 'BASE';
$cfg = array(
'SUBJECT' => $subject,
'EMAIL_FROM' => $emailFrom,
// 'LINK_PARAMS' => 'utm_source=newsletter&utm_medium=mail&utm_campaign=' . $linkParams,
'ATTACHMENT' => '',
// 'TEMPLATE_TYPE' => $templateType,
'TEMPLATE_ID' => $mailingId,
'MESSAGE' => $mailTmp,
);
foreach ($configuration->getOptions() as $option) {
$key = $option->getCode();
if (array_key_exists($key, $cfg)) {
$value = $cfg[$key];
$option->setValue($value);
}
}
$option = $configuration->getOptionByType(Bitrix\Sender\Message\ConfigurationOption::TYPE_MAIL_EDITOR);
//if ($option) {
// $message = str_replace('#MESSAGE#', $message, $option->getValue());
// $option->setValue($message);
//}
//$letter->getMessage()->getConfiguration()->set('TEMPLATE_TYPE', $templateType);
//$letter->getMessage()->getConfiguration()->set('TEMPLATE_ID', 1);
$result = $configuration->checkOptions();
if ($result->isSuccess()) {
//Сохраняет настройки полей выпуска в таблицу b_sender_message_field
$message->saveConfiguration($configuration);
$letter->set('MESSAGE_ID', $configuration->getId());
if ($letter->save()) {
//Send mail
$letter->getState()->send();
// echo '<pre>'.print_r(,1).'</pre>';
echo 'Success add letter: ' . $letter->getId();
}
} else {
implode('<br>', $result->getErrorMessages());
}
if ($letter->hasErrors()) {
implode('<br>', $letter->getErrorMessages());
}