Как работать с менеджером рассылки писем PHPLIST

Обновлено Обновлено: Опубликовано Опубликовано:

В данной статье рассказано, как работать с менеджером рассылки электронной почты phplist. Для установки и настройки, можно прочитать статью Установка и настройка phplist.

Начальная настройка

Входим в веб-панель администрирования phplist. Затем переходим в ConfigКонфигурация:

Конфигурирование phplist

В general settings проверяем, что название компании указано верно и добавляем логотип:

Настройка php-list в разделе general settings

В разделе campaign settings необходимо правильно прописать адреса для исходящей почты, а также адреса для получения уведомлений.

Также в данном разделе, можно отредактировать HTML-код для нижнего колонтитула.

Добавление подписчиков

Переходим в раздел ПодписчикиСписки рассылки:

Списки рассылки в phplist

Нажимаем по Добавить список рассылки:

Добавление нового списка рассылки в phplist

Вводим название для списка и нажимаем Сохранить. В следующем окне нажимаем по Добавить еще подписчиков:

Добавление подписчиков

Теперь в текстовое поле «Введите адреса для импорта…» вводим email адреса — каждый адрес с новой строки. После нажимаем Импортировать подписчиков.

Создание шаблона

Переходим в раздел КомпанииШаблоны:

Создание шаблона в phplist

Кликаем по Добавить новый шаблон:

Добавляем новый шаблон в phplist

Вводим заголовок и создаем HTML-шаблон. В тексте шаблона обязательно включаем текст [CONTENT] — это указатель текста контента, который будет подставлен при отправке письма.

Кликаем по Сохранить изменения.

Создание компании и выполнение рассылки

Переходим в раздел КомпанииОтправить компанию:

Отправка компании в phplist

Если откроется окно выбора черновика, выбираем его или кликаем по Создать новую компанию.

В открывшемся окне задаем тему письма, проверяем адрес отправителя, вводим текст для контента и переходим на вкладку Формат:

Отправка компании - вкладка содержимое в phplist

Выбираем шаблон и переходим на вкладку Списки:

Выбор шаблона при отправке компании в phplist

Выбираем галочками все группы рассылки, адресатам которых должно быть направлено письмо и переходим на вкладку Отправка.

На заключительной вкладке просто кликаем по Отправить компанию в очередь:

Отправка компании в очередь

Прикрепление файлов

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

vi /var/www/phplist/config/config.php

* где /var/www/phplist — путь по расположения портала phplist.

Добавляем:

define(“ALLOW_ATTACHMENTS”,1);
define(“NUMATTACHMENTS”,1);
define(“FILESYSTEM_ATTACHMENTS”,1);
define(“MIMETYPES_FILE”,”/etc/mime.types”);
define(“DEFAULT_MIMETYPE”,”application/octet-stream”);
$attachment_repository = ‘/tmp’;

В списке вкладок при создании компании появится «Вложения»:

Вкладка для добавления вложений при создании компании

SMTP-сервер

По умолчанию, phplist будет пытаться отправить письма через локальный MTA. При необходимости отправлять сообщения через определенный почтовый сервер, открываем на сервере конфигурационный файл:

vi /var/www/phplist/config/config.php

Редактируем:

define(‘PHPMAILERHOST’, ‘192.168.1.15’);

… и добавляем:

define(‘PHPMAILERPORT’,25);
$phpmailer_smtpuser = ‘smtpuser’;
$phpmailer_smtppassword = ‘smtppass’;

* где 

  • PHPMAILERHOST — адрес сервера MTA. В данном примере 192.168.1.15.
  • PHPMAILERPORT — порт, на котором слушает почтовый сервер, 
  • $phpmailer_smtpuser/$phpmailer_smtppassword — соответственно, логин и пароль (вводим, если сервер SMTP требует авторизации).

Управление очередями

Большое число писем необходимо отправлять порциями. Для этого существует возможность настройки очередей — phplist будет отправлять сообщения по несколько штук в течение заданного времени.

Для настройки открываем конфигурационный файл phplist:

vi /var/www/phplist/config/config.php

И добавим:

define(‘MAILQUEUE_BATCH_SIZE’, 120);
define(‘MAILQUEUE_BATCH_PERIOD’, 180);
define(‘MAILQUEUE_THROTTLE’, 1);
define(‘MAILQUEUE_AUTOTHROTTLE’, 0);
define(‘USE_DOMAIN_THROTTLE’, 0);
define(‘DOMAIN_BATCH_SIZE’, 1);
define(‘DOMAIN_BATCH_PERIOD’, 120);
define(‘DOMAIN_AUTO_THROTTLE’, 0);
define(‘MAX_PROCESSQUEUE_TIME’, 0);
define(‘PROCESSCAMPAIGNS_PARALLEL’, 1);

* где:

  • MAILQUEUE_BATCH_SIZE — максимальный количество писем, которые будут обработаны за один период.
  • MAILQUEUE_BATCH_PERIOD — количество секунд, которые длится период.
  • MAILQUEUE_THROTTLE — количество секунд для ожидания между письмами.
  • MAILQUEUE_AUTOTHROTTLE — автоматически регулировать задержку, чтобы количество MAILQUEUE_BATCH_SIZE уложилось в MAILQUEUE_BATCH_PERIOD.
  • USE_DOMAIN_THROTTLE — умеренная отправка писем на один и тот же домен.
  • DOMAIN_BATCH_SIZE — количество писем, разрешенное для отправки на один и тот же домен.
  • DOMAIN_BATCH_PERIOD — время, в течение которого длится период отправки сообщений на домен.
  • DOMAIN_AUTO_THROTTLE — автоматическая регулировка задержек для того, чтобы DOMAIN_BATCH_SIZE уложилось в DOMAIN_BATCH_PERIOD.
  • MAX_PROCESSQUEUE_TIME — ограничивает время для отправки сообщения.
  • PROCESSCAMPAIGNS_PARALLEL — позволяет отправлять несколько компаний одновременно.

Теперь создаем скрипт для запуска php-обработчика:

vi /usr/local/bin/phplist

#!/bin/bash

/usr/bin/php /var/www/phplist/admin/index.php -c /var/www/phplist/config/config.php $*

* где 

  • /usr/bin/php — путь до бинарника php. Обратите внимание, что он в разных системах может быть разный. Для поиска правитьного пути вводим команду which php.
  • /var/www/phplist — путь, ко которому расположен наш портал phplist.

Задаем права на запуск скрипта:

chmod u+x /usr/local/bin/phplist

Проверяем работу скрипта, запустив его:

/usr/local/bin/phplist -pprocessqueue

Мы должны увидеть что-то на подобие:

phpList – phpList version 3.5.3-RC1 (c) 2000-2020 phpList Ltd, https://www.phplist.com
phpList – Giving a UUID to 3 subscribers, this may take a while
phpList – Giving a UUID to 3 subscribers, this may take a while [0.0029020000] (131)
phpList – Recently sent : 0
phpList – Запущена [0.0045480000] (138)
phpList – Отправка группами с количеством писем – 120 [0.0002150000] (139)
phpList – Этап скрипта: 6 [0.0006350000] (143)
phpList – Завершено, нечего выполнять [0.0001400000] (144)
phpList – Завершено, все выполнено [0.0014480000] (149)

И последнее, создаем задачу в планировщике:

crontab -e

* * * * * /usr/local/bin/phplist -pprocessqueue

Обработка возвратов

Чтобы наш сервер рассылки не попал в черные списки почтовых хостеров, необходимо предотвратить повторные рассылки на почтовые ящики, которых не существует или которые возвращают ошибки.

Для этого в phplist предусмотрена специальая процедура обработки. Для ее настройки открываем конфигурационный файл:

vi /var/www/phplist/config/config.php

Находим настрйки и редактируем их:

$bounce_mailbox_host = ‘localhost’;
$bounce_mailbox_user = ‘[email protected]’;
$bounce_mailbox_password = ‘password’;

* где bounce_mailbox_host — почтовый сервер, где находится почтовый ящик с возвращенной почтой; bounce_mailbox_user — почтовый ящик, в котором находятся письма возвратов; bounce_mailbox_password — пароль для подключения к почтовому ящику.

Также обратите внимание на следующие параметры — их можно оставить по умолчанию или изменить по необходимости:

$bounce_protocol = ‘pop’;

define(‘MANUALLY_PROCESS_BOUNCES’, 1);

$bounce_mailbox_port = ‘110/pop3/notls’;

$bounce_mailbox_purge = 1;

$bounce_mailbox_purge_unprocessed = 1;

$bounce_unsubscribe_threshold = 5;

* где:

  • bounce_protocol — протокол, по которому phplist будет подключаться к ящику.
  • MANUALLY_PROCESS_BOUNCES — разрешить ручную обработку (из веб-интерфейса.
  • bounce_mailbox_port — настройка порта для подключения к почтовому ящику.
  • bounce_mailbox_purge — удалить сообщения из почтового ящика после их обработки.
  • bounce_mailbox_purge_unprocessed — удалить сообщения из почтового ящика, которые не удалось обработать.
  • bounce_unsubscribe_threshold — количество отказов, которые должны придти от ящика, чтобы считалось, что ящик можно удалять из phplist.

Теперь обработку отказов можно выполнить из командной строки:

/usr/local/bin/phplist -pprocessbounces

* обратите внимание, что мы используем скрипт /usr/local/bin/phplist, созданный нами при управлении очередями. Если скрипт не создавался, необходимо его создать сейчас.

Мы можем увидеть что-то на подобие:

phpList – phpList version 3.5.3-RC1 (c) 2000-2020 phpList Ltd, https://www.phplist.com
phpList – Загрузить возвращённые письма из почтового ящика
phpList – Не прерывайте обработку
phpList – Закрытие почтового ящика и удаление писем
phpList – reprocessing
phpList – Возвращённые письма для повторной обработки – 5
phpList – 5 из 5 обработано
phpList – Определение серии возвращённых писем
phpList – Нет заданий
phpList – Всего обработано подписчиков – 0

Убираем POWERED BY PHPLIST

Данное изображение появляется в конце каждого письма при рассылке. С одной стороны — phplist бесплатное программное обеспечение и разработчик имеет право рекламировать свою систему, с другой — при рассылках многим подобная надпись в конце письма покажется лишней.

Настройками данную надпись не убрать — нужно лезть в код программы. Для этого открываем следующий файл:

vi /var/www/phplist/admin/sendemaillib.php

* где /var/www/phplist — месторасположение портала phplist.

Находим $PoweredByImage с следующей строке:

global $strThisLink, $strUnsubscribe, $PoweredByImage, $PoweredByText, $cached, $website, $counters;

И удаляем эту переменную — получится:

global $strThisLink, $strUnsubscribe, $PoweredByText, $cached, $website, $counters;

Пробуем сделать рассылку.