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

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

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

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


вот такие


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

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

Интересные статьи

Интересные статьи

От скорости сайта зависит многое: количество отказов, брошенных корзин. Согласно исследованию Google, большинство посетителей не ждёт загрузки больше 3 секунд и уходит к конкурентам. Бывает, что сайт ...
Автор материала, перевод которого мы сегодня публикуем, говорит, что одна из проблем, с которыми приходится сталкиваться программистам, заключается в том, что у них их код работает, а у кого-то д...
Привет всем, Не знаю как вам, а мне всегда хотелось пореверсить старые приставочные игры, имея в запасе ещё и декомпилятор. И вот, этот радостный момент в моей жизни настал — вышла GHIDRA. О т...
В прошлый раз мы поговорили о согласованности данных, посмотрели на отличие между разными уровнями изоляции транзакций глазами пользователя и разобрались, почему это важно знать. Теперь мы начина...
Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row si...