Возникла задача - отправлять письмо о заказе, кроме клиента, на два разных ящика. Притом, ящики должны были чередоваться (в той организации два конкурирующих менеджера). Сразу возник алгоритм, что при отправке письма проверять, четный или нечетный ID заказа, и в зависимости от этого, отправлять письмо на тот, или иной ящик.
Больше всего времени пришлось затратить на поиск документации, к какому событию привязывается отправление почты. В оф. документации поиск ничего не дал - но, оказалось, что плохо искал, т.к. там эта информация была.
Для написания пригодилось знать следующее:
Событие http://dev.1c-bitrix.ru/api_help/main/events/onbeforeeventadd.php вызывается в момент добавление почтового события в таблицу b_event. Как правило, задача обработчика данного события - изменить или добавить какое-либо значение, передаваемое в макросы почтового шаблона.
Порядок выполнения страницы (в данном случае не слишком пригодилось, но однозначно полезная информация).
Почтовая система
Итак, сам код. Его надо разместить в /bitrix/php_interface/init.php.
<?
AddEventHandler("main", "OnBeforeEventAdd", array("MailCheredator", "OnBeforeEventAddHandler"));
class MailCheredator {
function OnBeforeEventAddHandler(&$event, &$lid, &$arFields) {
$arFields["SALE_EMAIL"] = "sale_mail@example.ru";
$arFields["BCC"] = "";
if (intval($arFields["ORDER_ID"]) % 2 == 1) {
$arFields["EMAIL"] = $arFields["EMAIL"]. ",email1@example.ru";
} else {
$arFields["EMAIL"] = $arFields["EMAIL"]. ",email2@example.ru";
}
}
}
?>
Здесь,
SALE_EMAIL
- в моем случае, адрес, с которого отправляется письмо (у вас может быть другой!).
BCC
- сюда отправляются копии письма, которые не должен видеть тот, кому отправляется письмо (можно было email1 и email2 сюда записать).
EMAIL
- адрес, куда отправится письмо. Можно перечислять через запятую.