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

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

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

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

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

    сможете помочь?
      Himurovich
      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
1
+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();
    Himurovich
    11 июля 2018, 13:26
    1
    0
    Супер! Послать забыли?)
    $modx->mail->send()
    Ну и дважды запрос сервиса
    $modx->getService('mail', 'mail.modPHPMailer');
    в новом коде.
      алексей
      11 июля 2018, 13:36
      +1
      да вроди как нет, все работает
      Алексей Бгатов
      12 июля 2018, 15:41
      0
      if (!$modx->mail->send()) {
      вот же.
        Himurovich
        12 июля 2018, 16:19
        0
        Все вы верно говорите, не туда смотрел. Открещиваюсь.