Отправка письма после регистрации (если даже не нужно подтверждать почту)

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 12 января 2016 в 14:23
Ребят. Я тут хочу немного улучшить отправку писем.
Сейчас: письмо после регистрации присылается только в том случае, если нужно подтвердить email. Это не гуд для тех, кто работает с email маркетингом.
Хочу: чтобы даже в случае, когда не нужно подтверждать почту, сообщение о регистрации приходило на почту.
Что сделал:
1. создал шаблон сообщения
2. в файле system/conrollers/auth/actions/register.php дописал это:

  1.  
  2. if ($result['success']){
  3.  
  4. // отправляем письмо об удачной регистрации
  5.  
  6. if (!$this->options['verify_email']){
  7.  
  8. $messenger = cmsCore::getController('messages');
  9. $to = array('email' => $user['email'], 'name' => $user['nickname']);
  10. $letter = array('name' => 'reg_seccess');
  11.  
  12. $messenger->sendEmail($to, $letter, array(
  13. 'nickname' => $user['nickname'],
  14. 'page_url' => href_to_abs('/'),
  15.  
  16. ));
  17.  
  18. }
  19.  
  20.  
  21. $user['id'] = $result['id'];
  22.  
  23. cmsUser::addSessionMessage(LANG_REG_SUCCESS, 'success');
  24.  
  25. // отправляем письмо верификации e-mail
  26. if ($this->options['verify_email']){
  27.  
  28. $messenger = cmsCore::getController('messages');
  29. $to = array('email' => $user['email'], 'name' => $user['nickname']);
  30. $letter = array('name' => 'reg_verify');
  31.  
  32. $messenger->sendEmail($to, $letter, array(
  33. 'nickname' => $user['nickname'],
  34. 'page_url' => href_to_abs('auth', 'verify', $user['pass_token']),
  35. 'valid_until' => html_date(date('d.m.Y H:i', time() + ($this->options['verify_exp'] * 3600)), true),
  36. ));
  37.  
  38. cmsUser::addSessionMessage(sprintf(LANG_REG_SUCCESS_NEED_VERIFY, $user['email']), 'info');
  39.  
  40. } else { ...
  41.  
Правильно ли я оформил код, и что нужно сделать еще?
#2 12 января 2016 в 14:56
Можно спросить, что такое верификация?
#3 13 января 2016 в 06:41


Можно спросить, что такое верификация?

Lora
проверка email
#4 13 января 2016 в 10:18
Azami, Понятно, спасибо.Тогда по моему вы неправильно сделали.Условие
  1. if ($result['success']){
является следствием этой самой верификации.Отправку вашего письма следует убрать из проверки условия.И проверку тоже при этом убрать.Т.е. сейчас есть проверка на галочку в админке
  1. if ($this->options['verify_email']){
И все остальные действия — результат этой проверки до строки
  1. } else {
  2. $errors = $result['errors'];
  3. }
Т.е. вам следует ваш код вставить до
  1. if ($result['success']){
#5 13 января 2016 в 18:24
Lora, разве?
  1. if ($this->options['verify_email']){
это условие при условии что
  1. if ($result['success']){
Т.е. уловие
  1. if ($this->options['verify_email']){
следствие условия
  1. if ($result['success']){
Зачем убирать все это? Если убрать часть кода, тогда при условии подтверждения почты ничего отправляться не будет.
#6 13 января 2016 в 19:17
Azami, внимательно читаем пост. .

Код PHP:

if ($this->options['verify_email']){

это условие при условии что
Код PHP:

if ($result['success']){

Azami
Нет наоборот.
Это у вас сейчас ничего не отправиться, если убрать галочку.

P.S. хотя не в коей мере не претендую на истину в последней инстанции
#7 13 января 2016 в 22:05
Lora, Внесу ясность, письмо для подтверждения почты и письмо об успешной регистрации (без верификации) — это 2 разных письма.
Верно?
#8 13 января 2016 в 23:26

Lora, Внесу ясность, письмо для подтверждения почты и письмо об успешной регистрации (без верификации) — это 2 разных письма.
Верно?

Azami
Я откуда знаю, что у вас там за письма.Я отталкиваюсь от вашего кода. Вы своё письмо поместили в условие
  1. if ($result['success']){
  2.  
А что у вас находиться в переменной $result? Смотрим код
  1. $result = $users_model->addUser($user);
Это обращение модели к методу, параметром которого выступает переменная $user, смотрим что у нас в $user? А в $user у нас результат проверки
  1. if ($this->options['verify_email']){
Или что то не так?
#9 14 января 2016 в 11:03
Lora, И что же делать, чтобы и при проверке почты и без нее письмо отправлялось?
#10 14 января 2016 в 14:52
Я уже отвечал на этот вопрос, и если вы не удовлетворены значит я что то не догоняю с вашими письмами, а с email маркетингом точно.Для чего например второе письмо, если галочка не стоит и юзер заносит в поле левый email? Если вы объясните, то возможно что нибудь придумаем.
#11 14 января 2016 в 15:30
Lora, Оно нужно для отправки приветственного письма. С небольшим обзором системы.
Такие письма приходят человеку сразу же после первого контакта с компанией. Этот вид писем необходимо отправлять клиенту незамедлительно, обычно они кроме стандартной информации о компании могут содержать некие приманки, чтобы стимулировать нового клиента к дальнейшему сотрудничеству.
#12 15 января 2016 в 13:30
Azami, Это понятно, непонятно другое.Что требуется от системы? Как это связанно с верификацией? Если никак, то вставьте код отправки своего письма куда нибудь в конец файла перед закрывающийся скобкой условия
  1. if ($is_submitted){...}
и всё. Тогда каждый раз как юзер кликнет по кнопки "зарегиться" будет отправляться письмо.
#13 16 января 2016 в 04:25


Azami, Это понятно, непонятно другое.Что требуется от системы? Как это связанно с верификацией? Если никак, то вставьте код отправки своего письма куда нибудь в конец файла перед закрывающийся скобкой условия

  1. if ($is_submitted){...}
и всё. Тогда каждый раз как юзер кликнет по кнопки "зарегиться" будет отправляться письмо.

Lora

Спасибо, я реализовал так, вставил код после условия if ($result['success']){

  1. if ($result['success']){
  2.  
  3.  
  4. $messenger = cmsCore::getController('messages');
  5. $to = array('email' => $user['email'], 'name' => $user['nickname']);
  6. $letter = array('name' => 'reg_seccess');
  7.  
  8. $messenger->sendEmail($to, $letter, array(
  9. 'nickname' => $user['nickname'],
  10.  
  11.  
  12. ));
Потому, что перед закрывающей скобкой условия if ($is_submitted){ не сработало.
Правильно ли я написал код приглашения?
#14 7 сентября 2018 в 22:50
/
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.