Почтовая рассылка

Модуль почтовых рассылок mod_mlist предназначен для организации почтовых рассылок на сайте. Представляет собой модуль с функционалом подписки на рассылку, а также административный интерфейс управления листами подписчиков на рассылку и архивами рассылок. Листы подписчиков организованы в древовидном виде, так что можно делать рассылку, например, включая все дочерние списки. Не обязательно дублировать email адреса в родительском списке.

Каждый элемент списка рассылки - это email адрес, а также флажок активности элемента списка. Кроме email адреса элемент списка рассылки может содержать дополнительные поля, например, ФИО получателя. Часто нужно персонифицировать письмо получателю, например, «Уважаемый Иванов Иван Васильевич!...». Список дополнительных полей в элементе списка рассылки задается в конфигурационном файле для сайта engine.ini в разделе [mlist] (см. настройки модуля ниже).

Состояния каждого элемента списка рассылки могут быть четырех типов:

  • активен – когда email добавляется в административном интерфейсе, либо человек, который подписался, активировал свою подписку на рассылку.
  • не активен – возникает тогда, когда администратор в интерфейсе управления списком рассылки вручную меняет статус и деактивируется пользователь в списке рассылки, или когда посетитель сам инициировал процедуру отписки от рассылки и подтвердил отписку от рассылки.
  • ожидает подтверждения подписки – состояние, когда человек подписался на список рассылки, но, еще не подтвердил свою подписку в список рассылки.
  • ожидает подтверждения отписки – когда посетитель отказался от рассылки, выполнив запрос на отписку от рассылки, и еще не подтвердил через свой email, что он является его владельцем этого почтового адреса.

Интерфейс посетителя.

интерфейс посетителя рассылки

Пользователь заходит на страницу модуля подписки и видит форму ввода со следующими полями:

  • Поле ввода email адреса, где пользователь может ввести свой email;
  • Кнопка «Подписаться»;
  • Кнопка «Отписаться»;
  • Поле выбора типа писем, которые хочет получать подписчик: в формате HTML (с форматированием) или простом текстовом формате.

В пользовательском интерфейсе есть ссылка – «управление подпиской». Она активна, когда на сайте Вы являетесь зарегистрированным пользователем (авторизованным) – сохраняются настройки по спискам рассылки. По каждому списку рассылки можно сделать групповую операцию, подписаться, установив флажок «статус» и указав форму письма, в каком виде мы хотим получать сообщения из конкретного списка рассылки.

управление подпиской самим пользователем

Если сам пользователь, владелец email, является подписанным на этот список, то ввод email и нажатие кнопки «Отписаться» инициирует процедуру отписки данного пользователя от списка рассылки.

Когда пользователь подписывается, то ему на email адрес приходит письмо о том, что он или кто-то другой подписал его на список рассылки. Если пользователь хочет быть подписанным на этот список, он кликает ссылку активации email адреса, которая находится внутри тела письма, тем самым подтверждая, что он является владельцем этого email адреса, чтобы не получалось, что любой пользователь может подписать на список рассылки любой адрес email, а только владелец email. Когда подтверждается из письма факт подписки на рассылку, то пользователь переходит из состояния «активен. ожидает подтверждения» в состояние «активен».

Если пользователь инициирует процедуру отписки, его состояние становится «неактивен, ожидает подтверждения», ему на email адрес высылается письмо о том, что он инициировал процедуру отписки от списка рассылки. Выбрав (кликнув) соответствующую ссылку в теле письма отписки, пользователь подтверждает, что хочет отписаться от списка рассылки. В этом случае пользователь деактивируется и становится неактивным, т.е. из состояния «неактивен, ожидает подтверждения» он переходит в состояние «неактивен».

Решить администратору сайта, на какой список рассылки подписываться или отписываться будут пользователи, можно с помощью интерфейса настроек.

настройка модуля рассылок

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

Также в настройках, в экземпляре модуля можно указать все списки рассылки, которыми может управлять пользователь именно на этом экземпляре модуля. Таким образом, мы можем получить возможность, чтобы каждый пользователь мог управлять подпиской на несколько списков рассылки одновременно.

Email адрес по умолчанию – тот email адрес, который ставится по умолчанию в качестве обратного при вводе нового сообщения рассылки, и куда будут возвращаться все письма от подписчиков, когда они нажимают «Ответить», и отчеты о недоставленных письмах.

Управление списком рассылки

панель управления подписчиками

Административный интерфейс представляет собой управление подписчиками, деленный на три колонки:

  1. Древовидный список рассылки. Каждый список можно отметить галочкой и выполнить групповые действия. Когда находимся в каком-то списке рассылки, выбираем действие:
    • «создать» - появляется диалоговое окно ввода наименования нового списка рассылки, добавляется дочерний список рассылки.
    • Если отметили галочкой определенные списки и выбираем действие, например, «удалить», то продолжив выполнение этого действия, удалим списки рассылки. Когда выбираем действие удалить, то появляются две настройки – «сохранить архив рассылки» и «сохранить подписчиков». Если удаляем какой-то список рассылки и выбираем флажок, например, «сохранить архив», то сообщения из удаляемого списка перемещаются в родительский список. Если флажок «сохранить архив» не установлен, сообщения удалятся. Флажок «сохранить подписчиков» действует аналогичным образом: если мы выбираем этот флажок, то подписчики из удаляемого списка переходят в родительский список.

    В каждом списке рассылки можно редактировать:

    редактирование списка рассылки

    • название списка,
    • описание списка,
    • тема email сообщения подтверждения подписки на список рассылки,
    • тема email сообщения подтверждения отписки пользователя от списка рассылки,
    • тело email сообщения подтверждения подписки,
    • тело сообщения подтверждения отписки,
    • настройки уведомлений администратора. Служат для получения администратором сообщений на электронную почту при наступлении событий: попытка пользователем подписаться на список рассылки, попытка пользователем отписаться от рассылки, подтверждений подписки и отписки от списка,
    • тема нового письма по умолчанию. Когда мы заходим в управление рассылкой, то появляется интерфейс отправки нового письма. Указав здесь тему, мы сразу же можем задать тему письма рассылки из списка, например, «Новости ЗАО «Дата Инлайф».
    • шаблон нового письма в списке рассылки. Письма в рассылке обычно бывают шаблонные, содержат начало (приветственную часть), текст сообщения и конец (завершающая часть). Шаблон письма по умолчанию можно настроить во время редактирования списка рассылки.
    • список файлов, вложенных в сообщение по умолчанию (обычно логотип организации). Аналогично теме и шаблону в письме по умолчанию можно присоединить файлы. Часто бывает, что само письмо – html-бланк организации, к которому по умолчанию присоединен логотип организации, и какие-то графические элементы дизайна бланка, поэтому по умолчанию сам html-код (тело письма содержит ссылки на графические файлы, которые присоединяются по умолчанию).
    • Флажок «Закрыть окно, если нет ошибок». Как только кликаем кнопку «Сохранить», данные сохраняются, и если нет ошибок, окно редактирования списка рассылки закрывается.
  2. Переходим к центральной части, и видим таблицу тех элементов списка рассылки, которые прикреплены к определенному списку: номер по порядку, id – идентификатор элемента, дата – когда была произведена подписка, email, статус, который говорит о статусе пользователя в этом списке рассылки, элемент получать письма либо в html, либо текстом. Далее могут идти дополнительные поля элементов списка рассылки. Самая последняя колонка содержит флажок, который позволяет отметить элементы списка рассылки и выполнять над ними групповые операции. Групповые операции выполняются нажатием кнопок в конце списка:
    • вырезать, перейти в другой список рассылки и нажать кнопку – вставить, т.е. те элементы, которые были в одном списке переносятся в другой.
    • изменить статус, у элементов списка рассылки статус меняется на противоположный. Какой элемент был активен, становится не активен, и наоборот.
    • удалить, групповое удаление адресов из списка рассылки.
  3. Третья колонка – управление списком рассылки содержит несколько форм:
    • добавить подписчика – вводим email, кликаем кнопку «Добавить», и в данный список рассылки добавляется подписчик.
    • Часто нам нужно быстро ввести несколько тысяч адресов, чтобы не добавлять каждый адрес в отдельности для этого служит интерфейс «Добавить список из файла», где список из файла может содержать одну (email) или несколько (дополнительные поля) колонок, разделенных символом табуляции.

      окно импорта списка рассылки

      Если это одна колонка, то каждая строка содержит email для добавления, если это несколько колонок, то очередность следования полей для импорта задается в порядке следования полей в файле импорта (см. рисунок). Алгоритм импорта: выбираем очередность следования полей в файле импорта, выбираем файл и кликаем кнопку «Добавить». В результате произойдет групповое добавление подписчиков в текущий список рассылки. Все email адреса, которые были ошибочны (у модуля есть определенная маска, по которой он выполняет проверку на правильность email адреса), не импортируются и выводятся в итоговый документ результатов импорта. Если email адрес уже существует в списке рассылки, его повторное добавление не имеет смысла, поэтому данный email попадет в отчет со статусом “already exists”. Т.е. по каждой ошибке мы увидим строку: email и причину, по которой данный email не добавлен в список рассылки.

    • Если список рассылки нам нужно использовать в другом месте, то для этого существует кнопка экспорта текущего списка рассылки в файл. Мы получаем его в виде csv-файла, на каждой новой строке будет email адрес. Кликаем эту кнопку, сохраняем данный файл на компьютере и пользуемся этим списком на свое усмотрение.
    • Если в первой форме мы добавляем подписчика, то в последней форме «Найти и выполнить» выполняются следующие действия: в поле email вводим email адрес, далее две кнопки – «Сменить состояние» (при этом если элемент в списке будет найдет по email, то при нажатии кнопки его состояние меняется на противоположное «Активен»/«Не активен») и «Удалить» (email удаляется из списка рассылки). При громадном количестве адресов списка рассылки, найти определенный email адрес среди сотен и тысяч страниц списка представляется очень сложным. А нам нужно удалить только один адрес. Достаточно ввести его в поле email, нажать кнопку «Сменить состояние». В результате сайт сам производит поиск элемента с таким email адресом, и меняет его активность.

Управление рассылкой

управление рассылкой

Раздел «Управление рассылкой» слева содержит древовидный список подписчиков. Отдельно по каждому списку рассылки ведется архив, какие письма посылались по списку рассылки, также можно в список рассылки включить дочерние. Каждое письмо из архива рассылки содержит дату отправки, а также текст и вложения письма.

При заходе в раздел по умолчанию, мы имеем возможность сразу отослать новое письмо. Тема, текст и вложения письма задаются при редактировании списка рассылки. Здесь также указывается обратный email адрес (задается в настройках модуля), на который будут отвечать получатели рассылки. Далее идет флажок «Включить дочерние списки в рассылку», который позволяет осуществить рассылку не только в текущем списке рассылки, но и во всех дочерних списках текущего. В поле текста письма содержится html–код, нажав кнопку «Визуальный редактор», получаем возможность отредактировать это письмо без особых навыков в html. Далее идет список файлов вложений в письмо. Сам интерфейс вкладок несложный: «+» - добавляет файл к вкладке, «-» - удаляет его. Для включения картинки в тело письма прикрепите файл к письму и в теге img в атрибуте src просто укажите имя файла без всяких дополнительных путей. Далее кнопка «Отправить».

Если отправляемое новое письмо несильно отличается от письма с прошлого раза, то, кликаем на заголовок письма в истории рассылки, и всё письмо, отосланное ранее, загрузится в интерфейс отправки нового. Можно отредактировать и отправить снова письмо.

Когда мы нажимаем кнопку «Отправить письмо», письмо попадает в буфер рассылки, формируется таблица неотправленных писем. Каждая запись буфера содержит идентификатор письма из архива и идентификатор получателя списка рассылки.

Сайт запускает скрипт, который выполняется в фоновом режиме и будет выполняться до тех пор, пока буфер рассылки не очистится, т.е. пока все получатели не получат письмо. Отправка почты может занять достаточно длительное время. Поменять скорость отправки администратор не может. Система сама старается отправить письма получателям, как можно скорее.
Как правило, считается правилом хорошего тона, когда каждое письмо содержит блок в конце письма, который позволяет отписаться пользователю в списках. Если получение из данного списка рассылки стало ему неинтересным, то имеется возможность удалить себя из списка рассылки, т.е. отписаться от него. Такие шаблоны писем задаются при редактировании самого списка рассылки.

Настройки модуля в конфигурационном файле engine.ini

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

[mlist]
; число строк в управлении подписчиками
lines_per_page = 50
;0
; число сообщений из архива в управлении рассылкой
messages_per_page = 20
;0
; контентный каталог относительно Paths::content_dir
content_dir = mlist
; маски для проверки корректности email
; следует обозначить 3 части маски: /^(часть 1)@(часть  2)\.(часть 3)\z/ круглыми скобками,
; т.к. в модуле используется проверка наличия данных частей  после применения маски.
; часть 1 - имя пользователя (то что до знака @)
; часть 2 - доменное имя сервера (2-ой уровень и выше)
; часть 3 - домен 1-го уровня.
; маска для строгой проверки (экспорт из файла и ввод  пользователя)
email_mask_strong =  /^([A-z0-9][A-z0-9\.\-_]*[A-z0-9]+)@([A-z0-9][A-z0-9_\-\.]*[A-z0-9])\.([A-z]{2,})\z/
; маска для проверки ручного ввода от администратора (высокая  степень доверия пользователю)
email_mask_soft = /^([^@:  ]+)@([^@: ]+)\.([^@:\. ]+)\z/
mlist_id = 1
allowed_lists = all
;sender = ...@....
; доп. поля получателей, используются при подстановке в тело  письма перед отправкой на отдельный ящик
; для подстановки используются метки вида #<field name>#
; помимо полей, перечисленных здесь, всегда доступны основные  поля id, email и user_id
; формат: <field1 name>:<field1  description>|<field2 name>:<field2 description>|...
;subscriber_afields = name:ФИО|phone:Телефон;

Чтобы изменить настройки модуля подписки на рассылку mlist, Вам необходимо содержимое файла module.ini из директории модуля скопировать в текст файла etc/engine.ini. Далее устанавливаете параметры по своему усмотрению.

Скачать одним файлом в формате pdf.