Автоуведомление в получении и прочтении писем

Тема в разделе "Обо всём", создана пользователем vikaharkov, 13 дек 2016.

  1. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    Тело письма не надо - зачем засирать почту и голову лишними буквами...
     
  2. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    Меня смущает слово "практически" :)
    И ваша жадность на раздачу регалий :(
     
  3. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    Да, но это уже мыслилось в ручном режиме - там требуется анализ причин, возможно созвон, иначе будет выглядеть спамом, если на автомате повторять отправку
     
  4. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Ну.. Это кажется..
    Во первых письмо может застрять в дороге, а тут бац.. а оно еше тепленькое

    Кроме того базу можно чистить от мусора
    Не.. никакого автомата!!!
    Черная метка на письме.

    Мало того, если привязать :) это все к модулю http://shop.opencart-russia.ru/order-customer-comment
    то одним кликом сделать пометку на получателе - Не читает письма.
    :)
     
    Последнее редактирование: 14 дек 2016
  5. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    Давайте я из практики расскажу.

    Я пользуюсь этими сервисам. И после прихода от них уведомления, я даже не открываю его. Пришло - хорошо, знаю, что прочитано. Не пришло - во, вот тут вопрос.... (новое, это я пропустила) Если у вас сотни клиентов, то вы не сможете помнить, кто открыл, кто не открыл вашу рассылку...

    Тут наверное, в дальнейшем нужно будет как-то этот вопрос отрегулировать. Ну отправили вы 500 рассылок. На какие-то поприходили уведомления, а на какие-то ещё в процессе. И шо, сидеть сличать - кому не пришло? Возможно, через некое время нужна будет статистика - столбик с емайлами, кому отправлено, и рядом столбик, кто из них не прочитал. Но пока это конечно в ручном режиме. Ладно, пусть это будет в релизе 0.0.2
     
  6. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    Кстати, не знаю, как модуль в работе, но нужный и полезный. Мы это ведём в ручном режиме, вбиваем в ехелевской клиентской базе ручками.
     
  7. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Ну.. пока мы рисуем функционал
    А формы управления, просмотра, редактирования - пока за пределами..

    Как показывает многолетняя практика - рисование интерфейса - это 75% основной работы.

    Т.е. раз-два - мясо промариновали, поджарили, а на сервировку стола, презентацию и гарнир потратили в два раза больше времени и сил.
     
  8. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Нужный и полезный.
     
  9. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    А где тот модуль, который в пример привели, хранит данные (там выше вы как-то спрашивали, где хранить данные)? В БД?
     
  10. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Конечно.
    Одобрят его на http://shop.opencart-russia.ru
    Я там все расскажу. Или здесь, но в другой теме.
     
  11. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    УТОЧНЕНИЕ (пока на заметку)
    (в плане более большого дополнения в перспективе)

    Нужно сразу отойти от островного, отрывочного формирования структуры (или иметь возможность в будущем ЛЕГКО переформатировать, перестроить под то, что скажу ниже)

    Все комерсы имеют свою базу данных клиентов. Ведут (собирают и ведут) кто как, но в основном в EXCEL (или 1С, что похоже)
    Могу выслать для понимания (чтобы не рожать велосипед) образец такой базы - графы, которые мы там ведём.

    Ну зачем мне в одном документе - информация о клиенте, в другом ещё какие-то его данные? В одном месте должно быть всё (в будущем). И если это всё будет формироваться полуавтоматически - вообще супер.

    Т.е., по каждому клиенту отдельно, как сейчас, например, в том модуле, но потом вся клиентская база должна автоматом сводиться в одну базу данных (многостраничная, но однолистовая - т.е., вся инфа на одном листе, а страниц может быть много, хотя у нас и страниц одна, так искать удобней)
     
    Последнее редактирование: 14 дек 2016
  12. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Вот ссылка на модуль
    http://shop.opencart-russia.ru/order-customer-comment
    Учет и аналитика всегда в головах, а не то как предлагает разработчик.
    Информация должна быть доступна в два-три клика
    На данном этапе модуль прост как двери.. Коммент к покупателю, или к заказу, живут своей жизнью, друг от друга не зависят.

    Иногда нет ни времени ни пожеланий чтобы интегрировать его с зарегистрированными покупателями.
     
  13. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    Отрывок из реальной клиентской БД
    Буфер обмена02.jpg
     
  14. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    По себе скажу - купила бы легко, ознакомившись ближе, но... рубли или долл, а у нас грн (между нами река, ни передать, ни перевести)
    Часто смотрю на нужную вещь и только вздыхаю :(
     
  15. vikaharkov

    vikaharkov Продвинутый пользователь

    Сообщения:
    676
    Симпатии:
    71
    Подведём маленький итог

    На все вопросы препода вроде бы отвечено. Но выводить общий алгоритм думаю пока рановато, нет команды. Значит, там есть ещё какие-то шаги.

    Перехожу в режим ожидания...
     
  16. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Отложим все до завтра...
    Тут нужно как бы нужно переспать с информацией.
     
  17. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    414
    Симпатии:
    54
    Готовитесь к новогодним рассылкам?
    Могу внести свою лепту, если помощь нужна.
    У меня шеф хочет картинки всем клиентам отправить, а еще есть старая база клиентов за 10 лет работы в кустарном экселе)
    Когда-то я пользовался платным сервисом по рассылкам.
    Создается рассылка и отправляется.
    Если в зайти в рассылку из списка, то видно текст и статистику: Отправлено Х / Просмотрено Y / Переходов Z /Отписалось N
    Если на нее кликнуть, то выпадает список адресов с датой и временем.
    Таблица с рассылкой есть.
    Создается еще одна таблица автонумерация/номер рассылки/е-mail/время отправления/время просмотра/время перехода/время отказа/секретный случайный код
    Можете еще дописывать таблицу на цели, на браузер, на все, что угодно.
    При отправлении после каждой отправки в эту таблицу вносится запись.
    Если пользоваться несколько раз в году, то и такая структура прокатит, а если у нужно воронку продаж делать, то там уже посложнее)
     
  18. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Нет..
    Там проблема совсем в другом.

    Есть ЦА.
    Это такие тетки неопределенного возраста, которые не могут пользоваться планшетом, но зато могут говорить по телефону, и хорошо разбираются в местном рынке недорогой одежды. А, и хорошо знают слово - сбрось на почту (в смску вся размерная сетка не поместится)
    Ну вот приходит такая мадама берет халатик за Nбумажек, включает свой калькулятор. И если ее калькулятор говорит, что она его продаст за N0 то она возьмет и купит партию от 56-го до 65 размера.
    А самый первый она подарит главбуху. (все считай что все халатики проданы.)
    Это конечно шутка, основанная на реалиях.

    И вот она отзвонилась, согласовала покупку, а ей написали в письме - нет халатиков с перламутровыми пуговицами. Но куда ей читать? Но она ж с гонором - Я Читала, там этого не было!. И тут... бац, письмецо из архива - э мадама... знаем, кушали. Не читала!. Читала бы - нам пришло уведомление.
    Т.е. и поведение с мадамой уже другое. И подход.
     
  19. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    414
    Симпатии:
    54
    Так в чем вопрос? Это в описанную схему с таблицей входит. Отправлено и просмотрено дата. У меня вообще клиентам задаю конкретный вопрос, они думают про свое и отвечают не в попад, но тут уже отметка о получении не канает)
    Например:
    - Мы сможем поставить данный товар через 5 месяцев, после получения предоплаты. Может подберем аналог?
    - Жду счет.
    - Мы вас не понимаем, вы оплатите и будете ЖДАТЬ 5 МЕСЯЦЕВ? А чтобы подобрать аналог, нам нужно понимать, где и при каких условиях будете использовать продукт.
    - Нет конечно.
    Вот тут уведомления бессильны.
    Еще письма с магазина не доходят на g-mail. Я тоже клиенту отправлял уведомления, а он их в папке спам нашел.
    Так что идея нужная, чтобы понимать, просмотрел клиент или нет.
     
  20. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    687
    Честно?
    Я уже забыл что писал/говорил в предыдущих постах, но основная мысль была следующая.
    1. Создать запись в базе, чтобы получить идентификатор письма
    2. Подготовить данные для отправки с идентификатором
    3. Создать скрипт/контроллер, который отдает картинку вложенную в письмо, для контроля открытия
    4. Отослать письмо
    5. Ждать открытия письма и в контроллере (п.3) прокрыжить момент прочтения - обращения к скрипту.

    6. Определиться, с тем что хранить в базе писем.

    Немного отойдем от темы и рассмотрим элементарный mailr.log



    За отправку писем отвечает system/library/mail.php

    метод send

    В методе есть выбор проверка способа отправки, которых существует пока два (mail и smtp)
    На самом деле, мне не совсем импонирует способы инициализации писем :(

    по крайней мере вот эта часть
    Код:
                    $mail->protocol = $this->config->get('config_mail_protocol');
                    $mail->parameter = $this->config->get('config_mail_parameter');
                    $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
                    $mail->smtp_username = $this->config->get('config_mail_smtp_username');
                    $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
                    $mail->smtp_port = $this->config->get('config_mail_smtp_port');
                    $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');
    
    Ведь эта часть "засоряет" код (помните о красивости?).
    На этом этапе - лишнее (на мой взгляд), эти данные нужно получать в самой библиотеке mail при выборе smtp

    Можно было сделать красивее через вызов модели

    Небольшое отступление, говорящее о пользе чтения исходников, и подтверждения слов - даниель твою мать..
    Код:
            if (is_array($this->to)) {
                $to = implode(',', $this->to);
            } else {
                $to = $this->to;
            }
    
    Во как!!!
    И тут же в
    catalog\model\checkout\order.php
    видим
    Код:
                        // Send to additional alert emails
                        $emails = explode(',', $this->config->get('config_alert_email'));
        
                        foreach ($emails as $email) {
                            if ($email && filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                $mail->setTo($email);
                                $mail->send();
                            }
                        }
    Т.е. в конфиге имеем получателей через запятую
    превращаем в массив и по одному отправляем

    Но, можно было передать и..

    Код:
    $mail->setTo($emails);
    А валидацию mail делать в библиотеке - все же это ООП, а не хрен собачий

    Это был несознательный уход в сторону от темы логирования писем..
    Итак

    Код:
    if ($this->protocol == 'mail') {
    До этого места мы занимались подготовкой к отправке
    К этому моменту у нас уже все есть.

    Самое время логировать - вызвать метод
    Код:
        
    $this->Log_Mail(array(
       'header' => $header,
       'to' => $to,
       'subject' => $this->subject,
       'message' => $message,
       'parameter' => ($this->parameter)?$this->parameter:'',
       'html' => $this->html,
       'from' => $this->from
       )
    );
    
    И.. конечно создать метод
    Код:
    protected function Log_Mail($data = array(), $output_log = true) {
        $line_end = PHP_EOL;
        $start_end_display = "**********************************************************************************************************************************";
    
        if ($output_log && $data) {
            $file_log_name = DIR_LOGS . "mail_" . Date("m-d-y") . ".log";
            $lf = fopen($file_log_name, "a+");
            $time_start = date("m-d-y h:i:s");
            $out = $start_end_display . $line_end;
            $out .= "============ " . $time_start . " ==========" . $line_end;
            $out .= str_pad('Header:',15);
            if (isset($data['header'])){
                $out .= $data['header'];
            }
            $out .= $line_end;
            if (isset($data['to'])){
                $out .= $data['to'];
            }
            $out .= $line_end;
            if (isset($data['from'])){
                $out .= $data['from'];
            }
            $out .= $line_end;
            if (isset($data['message'])){
                $out .= $data['message'];
            }
            $out .= $line_end;
            if (isset($data['message'])){
                $out .= $data['message'];
            }
            $out .= $line_end;
            $out .= $line_end;
            if (isset($data['html'])){
                $out .= $data['html'];
            }
            $out .= $line_end;
            fwrite($lf, $out);
            fclose($lf);
        }
    }
    
    На сегодня все.

    Есть желающие написать ocmod?
     
    biljvluojinjbhj, RoS, Ecsiron и ещё 1-му нравится это.