Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В модуле «Подписка, рассылки» есть очень замечательная возможность — прикладывать к письму произвольные файлы и автоматически заменять ссылки на изображения, собственно, самими картинками. И этого очень не хватает в стандартной почтовой системе битрикса.
Для решения задачи был написан небольшой модуль «Картинки и файлы в почтовых событиях», который позволяет делать из таких писем
вот такие
Почтовые шаблоны
Создать вложение-картинку очень просто, нужно разместить файл на сервере, а в форме редактирования почтового шаблона указать ссылку на него в теге 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 для сайтов с активным ключом. Замечания и предложения пишите в комментариях к этой статье или модулю.