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

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

Письмо без вложений

вот такие

Письмо с вложениями

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

Создать вложение-картинку очень просто, нужно разместить файл на сервере, а в форме редактирования почтового шаблона указать ссылку на него в теге 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 для сайтов с активным ключом. Замечания и предложения пишите в комментариях к этой статье или модулю.

Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!

Подписаться в telegram

3 комментария “Письма, файлы и картинки

  1. Серей

    Отличный модуль, спасибо за то что бесплатно!!

  2. Серей

    Алексей, и за сайт отдельная благодарность, несколько тем в закладках держу!

  3. Руслан

    Спасибо, обычно не доверяю сторонним решениям, что-то почти всегда идет не так и надо вникать, но НЕ в вашем случае! Всё отлично завелось сходу!

Добавить комментарий

Ваш адрес email не будет опубликован.