Уведомление администратора о регистрации пользователя

Добрый день, нужна помощь!
Как сделать чтобы администратору приходило письмо о новом зарегистрированном пользователе на сайте?
Используется компонент login.
Спасибо
алексей
11 июля 2018, 09:23
modx.pro
2
1 930
0

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

Андрей
11 июля 2018, 12:17
0
Можно использовать Post Hooks, там внизу страницы как раз пример отправки письма. Либо написать плагин на событие OnUserActivate или OnUserSave.
    алексей
    11 июля 2018, 12:45
    0
    posthook пробовал, сделал снипет «hookComEmail»
    на странице регистрации добавил "&postHooks=`hookComEmail`"

    регистрация проходит, но письмо не приходит

    сможете помочь?
      Антон Тарасов
      11 июля 2018, 12:57
      0
      Было бы здорово, если бы вы поделились полным вызовом сниппета Login и кодом вашего хука, так будет понятнее всем )
        Андрей
        11 июля 2018, 13:39
        1
        +1
        Прошу прощения, давно уже Login не использовал) там в примере хука ошибка (лишняя строка MAIL_SENDER), вот рабочий вариант:

        <?php
        $message = 'Новый пользователь зарегистрирован: '.$hook->getValue('username')
         . ' with email '.$hook->getValue('email').'.';
         
        $modx->getService('mail', 'mail.modPHPMailer');
        
        $modx->mail->set(modMail::MAIL_BODY,$message);
        $modx->mail->set(modMail::MAIL_FROM,'no_reply@domain.com');
        $modx->mail->set(modMail::MAIL_FROM_NAME,'Название сайта');
        $modx->mail->set(modMail::MAIL_SUBJECT,'Новый пользователь зарегистрировался');
        
        $modx->mail->address('to','to@domain.com');
        $modx->mail->setHTML(true);
        
        if (!$modx->mail->send()) {
            $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
        }
        
        $modx->mail->reset();
        return true;
        Ну или использовать вариант который вы нашли, суть одна. =)
      алексей
      11 июля 2018, 13:04
      0
      Страница регистрации:
      [[!Register?
          &submitVar=`registerbtn`
          &activationResourceId=`94`
          &submittedResourceId=`104`
          &activation=`1`
          &preHooks=`recaptchav2`
          &postHooks=`hookComEmail`
          &activationEmailSubject=`Подтверждение регистрации`
          &activationEmailTpl=`myActivateEmailTpl`
          &successMsg=`<p>Спасибо за регистрацию. На вашу электронную почту [[!+reg.email]] отправлено письмо, содержащее ссылку, необходимую для активацию аккаунта. Перейдите по этой ссылке, чтобы завершить процедуру регистрации.</p>`
          &usergroups=`Users`
          &validate=`nospam:blank,
        username:required:minLength=^4^,
        password:required:minLength=^6^,
        password_confirm:password_confirm=^password^,
        fullname:required,
        email:required:email`
          &placeholderPrefix=`reg.`
          
      ]]
       <div class="panel panel-primary">
              <div class="panel-heading"><i class="fa fa-id-badge"></i> Регистрация</div>
              <div class="panel-body">
                <p class="text-danger"></p>
                
      		  <div class="register">
          <div class="registerMessage">[[!+reg.error.message]]</div>
       
          <form class="form" action="[[~[[*id]]]]" method="post">
              <input type="hidden" name="nospam" value="[[!+reg.nospam]]" />
      <div class="form-group">
              <label class="col-sm-4 control-label" for="username">[[%register.username? &namespace=`login` &topic=`register`]]
                  
              </label>
              <input type="text" name="username" id="username" value="[[!+reg.username]]" />
              <span class="error">[[!+reg.error.username]]</span>
       </div>
      <div class="form-group">
        <label class="col-sm-4 control-label"  for="fullname">[[%register.fullname]]
                 
              </label>
              <input type="text" name="fullname" id="fullname" value="[[!+reg.fullname]]" />
               <span class="error">[[!+reg.error.fullname]]</span>
              </div>
      <div class="form-group">
              <label class="col-sm-4 control-label"  for="password">[[%register.password]]
                  
              </label>
              <input type="password" name="password" id="password" value="[[!+reg.password]]" />
              <span class="error">[[!+reg.error.password]]</span>
       </div>
      <div class="form-group">
              <label class="col-sm-4 control-label"  for="password_confirm">[[%register.password_confirm]]
                  
              </label>
              <input type="password" name="password_confirm" id="password_confirm" value="[[!+reg.password_confirm]]" />
              <span class="error">[[!+reg.error.password_confirm]]</span>
       </div>
      <div class="form-group">
       
              <label class="col-sm-4 control-label"  for="email">[[%register.email]]
                 
              </label>
              <input type="text" name="email" id="email" value="[[!+reg.email]]" />
               <span class="error">[[!+reg.error.email]]</span>
       </div>
              <br class="clear" />
      <div class="form-item">
        [[!recaptchav2_render]]
        [[!+reg.error.recaptchav2_error:notempty=`Пожалуйста, отметьте флажок на reCaptcha`]]
      </div>
              <div class="form-buttons">
                  <input type="submit" class="btn btn-primary pull-left" name="registerbtn" value="регистрация" />
              </div>
          </form>
      </div>
                <div class="clearfix"></div>
                <hr style="margin-top:10x;margin-bottom:5px;">
                
      		  
              </div>
            </div>
      Снипет hookComEmail:

      <?php
      $message = 'Hi, a new User signed up: '.$hook->getValue('username')
       . ' with email '.$hook->getValue('email').'.';
      $modx->getService('mail', 'mail.modPHPMailer');
      $modx->mail->set(modMail::MAIL_BODY,$message);
      $modx->mail->set(modMail::MAIL_FROM,'no-reply@domen1.ru');
      $modx->mail->set(modMail::MAIL_FROM_NAME,'Jerrys Site');
      $modx->mail->set(modMail::MAIL_SENDER,'Jerrys Site');
      $modx->mail->set(modMail::MAIL_SUBJECT,'New User Signed Up');
      $modx->mail->address('to','komu@domen.ru');
      $modx->mail->setHTML(true);
      $modx->mail->reset();
      /* tell our snippet we're good and can continue */
      return true;
        алексей
        11 июля 2018, 13:21
        2
        +1
        Вау-я програмистттттт
        отвечу сам, нашел в инете
        <?php
        /*Активируем почтовый сервис MODX*/
        $modx->getService('mail', 'mail.modPHPMailer');
        $modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
        $modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
        
        /*Адрес получателя нашего письма*/
        $modx->mail->address('to', 'komu@demen.ru');
        
        /*Заголовок сообщения*/
        $modx->mail->set(modMail::MAIL_SUBJECT, 'На сайте зарегистрирован новый пользователь');
        
        /*Подставляем чанк с телом письма (предварительно его нужно создать)*/
        
        /*$modx->mail->set(modMail::MAIL_BODY, $modx->getChunk('myEmailTemplate'));*/
        
        $message = '<strong>Здрасти</strong>, 
        <p>У нас новый пользователь с логином : '.$hook->getValue('username')
        . ' </p>и почтой email: '.$hook->getValue('email').'.';
        $modx->getService('mail', 'mail.modPHPMailer');
        $modx->mail->set(modMail::MAIL_BODY,$message);
        
        /*Отправляем*/
        $modx->mail->setHTML(true);
        if (!$modx->mail->send()) {
            $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
        }
        $modx->mail->reset();
          Антон Тарасов
          11 июля 2018, 13:26
          1
          0
          Супер! Послать забыли?)
          $modx->mail->send()
          Ну и дважды запрос сервиса
          $modx->getService('mail', 'mail.modPHPMailer');
          в новом коде.
            алексей
            11 июля 2018, 13:36
            +1
            да вроди как нет, все работает
              mngatoff
              12 июля 2018, 15:41
              0
              if (!$modx->mail->send()) {
              вот же.
                Антон Тарасов
                12 июля 2018, 16:19
                0
                Все вы верно говорите, не туда смотрел. Открещиваюсь.
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            10