Задать вопрос
@borisevstratov

Как посмотреть письмо перед отправкой в Bitrix?

Добрый день!

Я редактирую почтовый шаблон для почтового события SALE_NEW_ORDER и хочу убедиться, что клиентам будет отправлена корректная информация в правильном отображении.
Пытаюсь отладить вёрстку соответствующего почтового шаблона в Битриксе, поэтому мне необходимо посмотреть как будет выглядеть письмо, но при этом, чтобы письмо пользователю не отправлялось.

Каким образом или средствами возможно это сделать?

В таблице b_event, к сожалению, хранятся только поля письма, а не HTML-представление целиком.
  • Вопрос задан
  • 981 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
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);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@scaardss
Измените адрес почты в настройках главного модуля на свой тестовый и отправьте его себе, либо можно посмотреть в визуальном редакторе почтового шаблона
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы