Массовая отправка почты пользователям в Drupal 7

Из коробки Drupal 7, поддерживает отправку почты пользователям. Если перейти на страницу администрирования пользователей, то в выпадающем списке массовых операций, мы можем увидеть пункт «Отправить почту».

Но не смотря на то, что это массовые операции, после того как мы нажимаем кнопку выполнить, на следующей странице нам предложат ввести E-mail адреса пользователей. То есть автоматически не подхватывает отмеченных галочками пользователей.

В этой статье, мы сделаем более удобную отправку писем.

Плюсы моего варианта:

  • Можно галочками отмечать пользователей, которым нужно отправить письма;
  • Можно отправлять HTML письма (Вообще можно выбирать доступные форматы ввода (Full HTML, PHP code и т.д.));

Модули необходимые для реализации:

  • Rules (со всеми своими зависимостями);
  • MimeMail  (со всеми своими зависимостями);
  • Mime Mail CSS Compressor (Идет в поставке с MimeMail, нужен для верстки);

Настройка MimeMail

С MimeMail все просто. Переходим на страницу «Конфигурация» -> «Система» -> «Mime Mail». Указываем имя отправителя, E-mail отправителя и ставим галочки как показано на рисунке ниже. Сохраняем настройки.

Переходим на страницу «Конфигурация» -> «Система» -> «Почтовая система». И выбираем класс по умолчанию «MimeMailSystem» (Я поставил во всех вариантах этот класс).

На этом настройка MimeMail закончена. Кстати еще одна важная фишка MimeMail заключается в том, что в папке css вашей темы можно положить файл mail.css и верстать в нем ваши письма завязываясь просто на классы. Mime Mail CSS Compressor сам преобразует их в inline-стили для писем.

Компонент Rules

Список компонентов (а также создать новый компонент) можно найти на странице «Конфигурация» -> «Процесс» -> «Правила» -> «Компоненты». Нужно создать новый компонент с плагином компонента «Набор действий».

Ни для кого не секрет, что компоненты Rules можно использовать в качестве обработчиков для массовых операций (bulk operations). Если в двух словах, то мы будем передавать в компонент три параметра:

  • Пользователи, которым будем слать письма;
  • Тема сообщения;
  • Текст сообщения;

Ниже на скриншоте пример входных параметров компонента, как это сделано у меня.

img_5735ffa184e5f

Теперь перейдем непосредственно к действиям самого компонента. Он состоит из двух простых действий, это «Цикл» и «Send HTML  e-mail», который предоставляет нам модуль MimeMail.

Не вижу смысла описывать цикл, потому что мы просто передаем в него выбранных пользователей (которые приходят к нам в параметре), а вот про действие «Send HTML e-mail», которое вызывается внутри цикла, я думаю нужно поговорить. Хотя там тоже ничего сложного нет. В настройках этого действия нужно указать отправителя, тему (токен из параметра), текст сообщения (из параметра), получателя (элемент цикла, внутри которого вызываем действие) и еще несколько настраиваемых параметров.

Добавляем компонент в массовые операции

Тут тоже ничего сложного нет. Нужно открыть представление (Views) пользователей.

Открыть настройки поля «Массовые операции».

 

Поставить галочку напротив нашего компонента.

После этого нужно сохранить представление.

Тестируем

Идем в раздел пользователей, и видим  в массовых операциях наш компонент.

Выберите свой аккаунт. Выберите наш компонент в массовых операциях и нажмите выполнить. Появится окно где вы можете ввести тему письма, содержание письма в HTML формате, изменить фильтры и самое главное, что оно отправится выбранным пользователям.

 

Ну что дорогие друзья! Как говорится, «Пишите письма»!

 

Комментарии

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

  • Михаил

    А как можно настроить отчетность по отправке писем по Вашей схеме. Успешно, не успешно, кому отправлено. Или только журнал смотреть ?

  • popstas

    Если хотите верстать адаптивные письма, то нужны media queries, они не инлайнятся, поэтому приходится выключать mimemail_compressor. Но тогда ломается верстка в некоторых почтовых клиентах… Issue висит 3+ года — https://www.drupal.org/node/1853066, там написано, как можно выйти из положения. Я вышел через установку https://www.drupal.org/sandbox/dmitriytrt/1939698