bxSender - логируем email сообщения заказов minishop

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



Включение пересылки писем minishop2


В настройках достаточно включить параметры minishop2_status_change чтобы все сообщения из minishop2 проходили через bxSender.

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

В списке сообщений отображается:
  • Кому — менеджеру или пользователю
  • Статус заказа — указывается на каком статусе было отправлено это сообщение
  • Состояние отправки — sent — отправлено, error — произошла ошибка во время отправки
  • Создан — дата создания сообщения
  • Действия — посмотреть сообщение


Статистику по отправке сообщений вы можете все так же посмотреть в разделе компонента Отчеты рассылок



Отключение отправки


Добавлена настройка bxsender_do_not_send_messages — при включении, сообщения будут попадать в очереди, и не будет отправлять на e-mail (помогает для тестирования отправки сообщений).

https://modstore.pro/packages/alerts-mailing/bxsender

Немного полезностей:

Пересылка сообщений


Чтобы поймать сообщения отправляемые через modx при инициализации, создаем плагин с событием OnMODXInit вешается свой класс сервиса mail

<?php
/* @var bxSender $bxSender */
/* @var array $scriptProperties */
switch ($modx->event->name) {
    case "OnMODXInit":
        $modx->getService('mail', 'bxPHPMailer', MODX_CORE_PATH . 'components/bxsender/model/');
        break;
}

Свой класс bxPHPMailer
<?php
if (!class_exists('modPHPMailer')) {
    include_once MODX_CORE_PATH . 'model/modx/mail/modphpmailer.class.php';
}

class bxPHPMailer extends modPHPMailer
{

    /* @inheritdoc */
    public function send(array $attributes = array())
    {
        /* @var PHPMailer $mailer */
        $mailer = $this->mailer;
        // Ищем в отправителе текст bxsender чтобы индитифицировать наше сообщение
        if (strripos($mailer->From, 'bxsender') !== false) {
            // $mailer->From - отправитель
            // $mailer->getToAddresses() - список адресов куда пойдет сообщение
            // $mailer->Subject - тема сообщения
            // $mailer->Body - тело сообщения

            // Тут что то делаем с нашим сообщением, и потом поменяем отправителя
            $mailer->From = 'Пишем новый email отправителя';
        
            // Или можем вернуть true и уже потом послать сообщение из очереди (можно послать его даже сразу через свой код, главное изменить отправителя)
            return true;
        }
        // и продолжаем посылать сообщение
        return parent::send($attributes);
    }
}

Методов словить сообщение в функции send, много, можно просто использовать какой то плейсхолдер, или любую глобальную переменную с помощью которой делать что то с сообщениями.
Андрей Степаненко
17 августа 2019, 11:42
modx.pro
1
978
+12
Поблагодарить автора Отправить деньги

Комментарии: 0

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