Наверх

Уведомления

Модуль отправляет уведомления на электронный ящик (e-mail) или SMS-уведомления.

Начиная с версии 6.0.8.9 модуль полностью заменил подключения «Почта» и «SMS».

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

Подключение

Подключаемая часть – файл modules/postman/postman.inc.php. В нем описан класс Postman_inc. В модуле к объекту класса можно обратиться через переменную $this->diafan->_postman. Экземпляр класса создается при первом вызове переменной.

Среди функций подключения две широко применимы и могут быть использованы в других частях CMS: message_add_mail() и message_add_sms(). Остальные определены для внутреннего использования модулем «Уведомления».

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

На работу функции message_add_mail() влияет еще настройка «Включить отложенную отправку для почты». Если она выключена, письмо просто будет отправлено.

Режим «Включить отложенную отправку для почты» позволяет только инициировать отправку. Скрипт не будет ждать ответа, поэтому отправка письма никак не повлияет на время ответа сервера. Иногда сервер тратить заметное время на подключение к почтовой службе и пользователю приходится ждать ответа на свои действия из-за того, что обработка его действий включает отправку письма. Режим отложенной загрузки решает эту проблему.

Аналогично для функции message_add_sms() и настройки «Включить отложенную отправку для SMS».

Код вызова этих двух функций полностью заменяет устаревший (начиная со сборки 6.0.8.9) код, использующий подключение «Почта».

Пример:

Устаревший код:

Custom::inc(ABSOLUTE_PATH.'includes/mail.php');
send_mail("to@anymail.com", "Заголовок письма", "Содержимое письма<br>Можно использовать HTML", "from@site.ru");

И подключение «SMS».

Пример:

Устаревший код:

Custom::inc(ABSOLUTE_PATH.'includes/sms.php');
Sms::send('Сообщение пользователю', '797777777777');

Методы подключения разделены на три части.

Работа с базой данных

Эта группа описана в файле modules/postman/inc/postman.inc.db.php. К методам для работы с базой данных нужно добавлять префикс db_. Например, $this->diafan->_postman->db_add().

Методы

add (mixed(string|array) $recipient, string $subject, string $body, [string $from = ''], [string $type = 'mail'], [boolean $auto = true]) – Добавляет уведомление.

  • mixed(string|array) $recipient: получатель/получатели
  • string $subject: тема письма
  • string $body: содержание письма
  • string $from: адрес отправителя
  • string $type: тип уведомления: mail – письмо, sms – короткое сообщение
  • boolean $auto: метод отправки уведомления: false – ручной, true – автоматический

Пример:

Добавим в базу данных модуля письмо на отправку.

$this->diafan->_postman->db_add("to@anymail.com", "Заголовок письма", "Содержимое письма<br>Можно использовать HTML", "from@site.ru", "mail", true);

integer count_sent () – Возвращает количество уведомлений, требующих отправки.

Пример:

echo 'Количество писем и SMS, ожидающих отправку: '.$this->diafan->_postman->db_count_sent();

Выведет: Количество писем и SMS, ожидающих отправку: 7

Работа с отложенной нагрузкой

Эта группа описана в файле modules/postman/inc/postman.inc.defer.php. К методам для работы с отложенной нагрузкой нужно добавлять префикс defer_. Например, $this->diafan->_postman->defer_init().

Методы

void init () – Инициирует отложенную отправку уведомлений.

Пример:

Если включены настройки «Автоматическая отправка уведомлений» и «Включить отложенную отправку для почты», инициируем отложенную отправку.

if($this->diafan->configmodules('auto_send', 'postman') && $this->diafan->configmodules('mail_defer', 'postman'))
{
    
$this->diafan->_postman->defer_init();
}

Работа с сообщениями

Эта группа описана в файле modules/postman/inc/postman.inc.message.php. К методам для работы с сообщениями нужно добавлять префикс message_. Например, $this->diafan->_postman->message_add_mail().

Методы

string add_mail (string|array $recipient, string $subject, string $body, [string $from = '']) – Добавляет письмо в список почтовых отправлений.

  • string|array $recipient: получатель/получатели
  • string $subject: тема письма
  • string $body: содержание письма
  • string $from: адрес отправителя

Пример:

Отправляем сообщение на почту пользователя.

$this->diafan->_postman->message_add_mail("to@anymail.com", "Заголовок письма", "Содержимое письма<br>Можно использовать HTML", "from@site.ru");

Поле «Отправитель» рекомендуем оставлять пустым, чтобы использовался e-mail из настроек модуля «Уведомления». Если адрес почты не будет совпадать с тем, для которого настроена SMTP-авторизация, то письма могут не проходить спам-фильтры почтовых служб.

Поэтому лучше отправлять так:

$this->diafan->_postman->message_add_mail("to@anymail.com", "Заголовок письма", "Содержимое письма.<br>Можно использовать HTML.");

mixed string add_sms (string $text, string $to) – Добавляет SMS в список почтовых отправлений.

  • string $text: текст SMS
  • string $to: номер получателя

Пример:

$this->diafan->_postman->message_add_sms('Сообщение пользователю', '797777777777');

boolean send (mixed(array|string) $id) – Отправляет уведомление.

  • mixed(array|string) $id: идентификатор уведомления

Пример:

$id = DB::query_result("SELECT id FROM {postman} LIMIT 1");
if(
$this->diafan->_postman->send($id))
{
    echo
'Уведомление отправлено.';
}
else
{
    echo
'Уведомление не отправлено.';
}

Уведомления

В административной части модуля можно отправить письмо или SMS и увидеть очередь уведомлений. Если в настройках модуля отмечена опция «Удалять отправленные уведомления», то в списке будут только письма и SMS в очереди на отправку или те, что не удалось отправить. Здесь можно увидеть ошибку, которая появилась при попытке отправить уведомление. Если же настройка не отмечена, то в списке будут и все отправленные уведомления.

Поля формы добавления / редактирования уведомления

Основные:

  • Тип уведомления – Возможные значения:
    • письмо,
    • SMS.
  • Дата и время – Дата и время создания уведомления.
  • Статус отправки уведомления – Состояние и время отправки уведомления. Возможные значения:
    • Подготовлено,
    • Отправлено,
    • Ошибка.
  • Адрес получателя – Для почтового уведомления необходимо указать адрес или адреса через пробел получателя. Для SMS-уведомления – адрес получателя.
  • Тема уведомления – Содержание заголовка почтового уведомления. Для SMS-уведомления не указывается.
  • Содержание письма – Содержание уведомления, направляемое адресату.
  • Адрес отправителя – Указывается для почтового уведомления адрес, от имени которого будет направлено письмо. Для SMS-уведомления не указывается.
  • Отчет об ошибке отправления – Содержит сведения об ошибке при отправлении.
  • Трассировка отправления – Содержит сведения о трассировке отправления.

Дополнительные:

  • Отправить уведомление – Если отмечена, уведомление будет отправлено адресату.
  • Время последнего изменения – Изменяется после сохранения элемента.

Настройки

Основные настройки

  • Основные.
  • Автоматическая отправка уведомлений – Если отмечено, отправка уведомлений пройдет в автоматическом режиме. Иначе требуется инициализация отправки уведомлений в административной панели сайта.
  • Удалять отправленные уведомления – Автоматическое удаление уведомлений после отправки.

Почта

  • E-mail сайта – Адрес, на который по умолчанию приходят уведомления и который указывается в обратном адресе всех писем. Здесь может быть указан только один адрес.
  • Использовать SMTP-авторизацию при отправке почты с сайта – Обязательно используйте исходящую SMTP-авторизацию, иначе письма-уведомления с сайта могут блокироваться большинством спам-фильтров.
  • SMTP-хост (например, tls://smtp.mail.ru) – Параметр появляется, если отмечена опция «Использовать SMTP-авторизацию при отправке почты с сайта».
  • SMTP-логин (например, ivanov@mail.ru) – Ваш почтовый логин, для входа в почту. Параметр появляется, если отмечена опция «Использовать SMTP-авторизацию при отправке почты с сайта».
  • SMTP-пароль – Ваш почтовый пароль, для входа в почту. Параметр появляется, если отмечена опция «Использовать SMTP-авторизацию при отправке почты с сайта».
  • SMTP-порт (например, 465 или 587) – В большинстве случаев можно не указывать. Если используется протокол SSL, то чаще всего необходимо указывать SMTP-порт 465. Если используется протокол TLS, то чаще всего необходимо указывать SMTP-порт 587. Параметр появляется, если отмечена опция «Использовать SMTP-авторизацию при отправке почты с сайта».
  • Включить отложенную отправку для почты – Отправка почтовых уведомлений будет проходить независимо от основных процессов. Параметр появляется, если отмечена опция «Автоматическая отправка уведомлений».

SMS

  • Подключить SMS-уведомления.
  • Поставщик услуг – Возможные значения:
    • SMSC,
    • Byte Hand.
    Параметр появляется, если отмечена опция «Подключить SMS-уведомления».
  • Логин – Логин Клиента (данные из настроек сервиса SMSC).
  • Пароль – Пароль Клиента (данные из настроек сервиса SMSC).
  • Подпись – Подпись отправителя SMS (данные из настроек сервиса SMSC).
  • ID – Идентификатор пользователя. Целое число, больше нуля (данные из настроек сервиса Byte Hand).
  • Ключ – Уникальный ключ пользователя – строка из 16 символов, пример AB48D920104CE241 (данные из настроек сервиса Byte Hand).
  • Подпись – Подпись отправителя SMS (данные из настроек сервиса Byte Hand).
  • Включить отложенную отправку для SMS – Отправка sms уведомлений будет проходить независимо от основных процессов.

База данных

{postman} – Уведомления

Файлы

  1. modules/postman/admin/postman.admin.php – редактирование почтовых отправлений;

  2. modules/postman/admin/postman.admin.action.php – обработка POST-запросов в административной части модуля;

  3. modules/postman/admin/postman.admin.config.php – настройки модуля;

  4. modules/postman/admin/postman.admin.count.php – количество неотправленных уведомлений для меню административной панели;

  5. modules/postman/inc/postman.inc.db.php – подключение модуля «Уведомления» для работы с базой данных;

  6. modules/postman/inc/postman.inc.defer.php – подключение модуля «Уведомления» для работы с отложенной отправкой сообщений;

  7. modules/postman/inc/postman.inc.message.php – подключение модуля «Уведомления» для работы с сообщениями;

  8. modules/postman/postman.inc.php – подключение модуля «Уведомления»;

  9. modules/postman/postman.install.php – установка модуля;

  10. modules/postman/postman.send.php – отправка уведомлений.

Ваши комментарии и дополнения

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