fintech-fab / fintech-fab.ru

Fintech Fab Website - стажировка, обучение, тренинги
4 stars 16 forks source link

Отправка писем через общий компонент #9

Closed mikanoz closed 10 years ago

mikanoz commented 10 years ago

Сейчас с сайта может быть отправлено одно письмо (заявка на стажировку). Возможно, скоро будет два (см. задачу #8 - приветственное письмо автору заявки на стажировку). Потом еще, и еще... Хочется чтобы отправка писем была собрана в одном месте. Нужно сделать класс-"компонент" (директория для классов-компонентов - FintechFab/Components), куда перенести отправку писем. Компонент должен работать примерно так:

$mailSender = new MailSender();
$mailSender->setParams(array(
  'to' => получатель,
  'name' => имя получателя,
));
$mailSender->doVanguardOrderAuthor();

что означает отправку приветственного письма автору заявки. Т.е. метод doVanguardOrderAuthor отправляет вполне конкретное письмо.

k17-sergey commented 10 years ago

Непонятно, зачем здесь "setParams"? Имя получателя письма сохраняется в памяти, и ему можно посылать несколько писем; то есть не меняя заданные параметры посылаем разные письма... одному и тому же адресату.

По-моему, если такое не нужно, то должно быть так:

$mailSender->doVanguardOrderAuthor(array(
  'to' => получатель,
  'name' => имя получателя,
));

Сейчас почту отправляет функция "postOrder()". Она анализирует результат отправки, и определяет текст всплывающего сообщения. Пожалуй, содержимое этой функции нужно перенести в объект MailSender, частично или полностью. Наверное, надо и текст всплывающего сообщения создавать в этом объекте, типа: $mailSender.titleMessage $mailSender.userMessage

Насколько я понял, нужны функции:

$mailSender->doVanguardOrder();
$mailSender->doVanguardOrderAuthor();
mikanoz commented 10 years ago

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

"надо и текст всплывающего сообщения создавать в этом объекте, типа:"

не согласен, т.к. сообщения пользователю на сайте это одно, а отправка писем - другое. Не стоит смешивать совсем разные штуки. Отправляем письмо одним объектом, получаем от него ответ, дальше уже "работаем с пользователем", если вообще посчитаем это нужным.

Насколько я понял, нужны функции:

Да.

k17-sergey commented 10 years ago

В принципе сделано.

Для задачи #8 нужно только заполнить функцию

doVanguardOrderAuthor();

она расположена в

    app/FintechFab/Components/MailSender.php
mikanoz commented 10 years ago

Слито в мастер