Письма, файлы и картинки

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В модуле «Подписка, рассылки» есть очень замечательная возможность — прикладывать к письму произвольные файлы и автоматически заменять ссылки на изображения, собственно, самими картинками. И этого очень не хватает в стандартной почтовой системе битрикса.

Для решения задачи был написан небольшой модуль «Картинки и файлы в почтовых событиях», который позволяет делать из таких писем


вот такие


Почтовые шаблоны

Создать вложение-картинку очень просто, нужно разместить файл на сервере, а в форме редактирования почтового шаблона указать ссылку на него в теге img

<img src="/upload/company_logo.jpg"><br />
<h1>Вас приветствует компания ...</h1>

Для сохранения в письме файлов, которые можно будет скачать из почтового клиента, в шаблоне необходимо указать ссылки на них по маске #file:путь_к_файлу# или воспользоваться обработчиками событий

<img src="/upload/comany_logo.jpg"><br />
<h1>Вас приветствует компания ...</h1>
#file:/upload/price.xls#
#file:/upload/company_info.doc#

Обработчик события

В модуле реализована обработка события OnBeforeParseMail($arFields, $arTemplate) для гибкой логики создания вложений. В функцию-обработчик передается 2 параметра — список переменных и массив параметров шаблона.

Примеры

Отключение модуля для писем с ID шаблона = 10

if (IsModuleInstalled("av.mailfile")) {
    AddEventHandler('av.mailfile', 'OnBeforeParseMail', 'OnBeforeParseMailHandler', 0);
    function OnBeforeParseMailHandler($arFields, $arTemplate) {
        if($arTemplate["ID"] == 10)
        	return false;
    }
}

Добавление файла «/upload/offer.doc» в письма пользователю с e-mail «test@localhost.ru»

if (IsModuleInstalled("av.mailfile")) {
    AddEventHandler('av.mailfile', 'OnBeforeParseMail', 'OnBeforeParseMailHandler', 0);
    function OnBeforeParseMailHandler($arFields, $arTemplate) {
        if($arTemplate["EMAIL_TO"] == "test@localhost.ru") {
	        // получаем доступ к экземпляру класса модуля
	        $obMail = C_AV_Mailfile::getInstance();
	        // public-методом addFile добавляем файл к списку отправляемых
	        $obMail->addFile("/upload/offer.doc");
        }
    }
}

Модуль бесплатный, доступен для скачивания в marketplace для сайтов с активным ключом. Замечания и предложения пишите в комментариях к этой статье или модулю.