boris tyrepharm, к сожалению вы не можете посмотреть "будущие" письма, так как такая генерация очень сложна.
Но вы можете посмотреть существующее письмо в новом дизайне. К тому же - вы можете увидеть только как будет выглядеть ваше письмо, если его вывести в браузере, но это не одно и то же, как если оно пройдет через MTA и будет отображаться в Outlook/Thundebird/OWA и т.п.
Например я хочу посмотреть как приблизительно(*) будет выглядеть сообщение с ID 336020 (в таблице b_event), после изменения дизайна в существующем шаблоне.
use Bitrix\Main\Mail;
/**
* Get from b_event table
* @var integer Existed event id
*/
$displayedEventId = 336020;
/**
* List of site ids, for event theme generation
* must be replaced by current site id in public
* @var array
*/
$arSites = [
's1'
];
try
{
/**
* First, try to find event
*/
$arEvent = Mail\Internal\EventTable::getRow([
'filter' => [
'=ID' => $displayedEventId,
]
]);
if ( !$arEvent )
{
throw new \Exception('Event not found');
}
$arEvent['FIELDS'] = $arEvent['C_FIELDS'];
/**
* Try to find all message templates for
* sites. In event handler we send for one letter
* per site.
*/
$arEventMessageFilter = [
'=ACTIVE' => 'Y',
'=EVENT_NAME' => $arEvent["EVENT_NAME"],
'=EVENT_MESSAGE_SITE.SITE_ID' => $arSites,
];
$messageDb = Mail\Internal\EventMessageTable::getList([
'select' => ['ID'],
'filter' => $arEventMessageFilter,
'group' => ['ID']
]);
foreach ($messageDb as $arMessage)
{
$eventMessage = Mail\Internal\EventMessageTable::getRowById($arMessage['ID']);
$eventMessage['FILES'] = array();
$attachmentDb = Mail\Internal\EventMessageAttachmentTable::getList(array(
'select' => array('FILE_ID'),
'filter' => array('=EVENT_MESSAGE_ID' => $arMessage['ID']),
));
while($arAttachmentDb = $attachmentDb->fetch())
{
$eventMessage['FILE'][] = $arAttachmentDb['FILE_ID'];
}
$arFields = $arEvent['FIELDS'];
// get message object for send mail
$arMessageParams = array(
'EVENT' => $arEvent,
'FIELDS' => $arFields,
'MESSAGE' => $eventMessage,
'SITE' => $arSites,
'CHARSET' => $charset,
);
$message = Mail\EventMessageCompiler::createInstance($arMessageParams);
$message->compile();
echo $message->getMailBody();
}
}
catch( \Exception $e )
{
var_dump($e);
}