Не работает postHooks в Register

Всем доброго дня!
Проблема такая
Сделал регистрацию без активации и автогенерацией пароля--это всё работает.
Так-же надо сделать уведомление этому юзеру с паролем.
Попытался реализовать как на https://docs.modx.com/extras/revo/login/login.tutorials/login.using-pre-and-post-hooks#Login.UsingPreandPostHooks-Examples

И так и эдак перепробовал---не работает. В логе
[2017-05-30 15:42:10] (ERROR @ /home/...../www/core/cache/includes/elements/modsnippet/63.include.cache.php: 13) An error occurred while trying to send the email:
Может кто сталкивался с такой задачей?
Подскажите пожалуйста!
И может есть другой способ реализовать уведомление на email
Спасибо!
Вот код

Вызов Register
[[!Register?
	&generatePassword=`1`
	&validatePassword=`0`
	&activation=`0`
	&postHooks=`hookComEmail`
    &successMsg=`<div class="alert alert-success">Спасибо за регистрацию. На вашу электронную почту <b>[[!+reg.email]]</b> отправлено письмо </div>`
	&submitVar=`register-btn`&placeholderPrefix=`reg.`
  	&usernameField=`email`
    &usergroupsField=`reg_type`
    &customValidators=`valueIn`
    &validate=`username:blank,
        reg_type:valueIn=^explorers^,
        fullname:required:minLength=^6^,
		email:required:email`
    ]]
[[!+error.message:default=`[[!$Register.Form.Exp.Home]]`]]
Сама форма
<form action="[[~[[*id]]]]" method="POST" class="form-horizontal" id="register_form">
<input type="hidden" name="reg_type" id="reg_type1" value="explorers" [[!+reg.reg_type:is=`explorers`:then=`checked`:else=``:default=`checked`]]>
<div id="RegForm" class="">


<label class="loginUsernameLabel" for="name">Представьтесь:

            <input class="loginUsername" type="text" name="fullname" value="[[!+reg.fullname]]">
            [[!+reg.error.fullname:notempty=`<div class="alert alert-danger">[[!+reg.error.fullname]]</div>`]]

</label>


<label class="loginPasswordLabel" for="email">Электронная почта:
       
            <input class="loginPassword" type="text" name="email" value="[[!+reg.email]]">
            [[!+reg.error.email:notempty=`<div class="alert alert-danger">[[!+reg.error.email]]</div>`]]
</label>


<span class="loginLoginButton">
            <input type="submit" name="register-btn" class="register-btn" value="Зарегистрироваться">
</span>

        <div class="col-xs-12">
            <p class="pull-right">Все поля обязательны для заполнения</p>
        </div>

	</div>
</form>
И postHook `hookComEmail`
<?php
$message = 'Hi, a new User signed up: '.$hook->getValue('fullname')
 . ' with email '.$hook->getValue('email').'.';
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'emailsender');
$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','xndr.xndr@yandex.ru');
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$err);
}
$modx->mail->reset();
/* tell our snippet we're good and can continue */
return true;
Alexander
30 мая 2017, 13:03
modx.pro
1
2 097
0

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

Алексей Ерохин
30 мая 2017, 17:22
0
$modx->mail->set(modMail::MAIL_FROM,'emailsender');
Это неверно
$modx->mail->set(modMail::MAIL_FROM,$modx->getOption('emailsender'));
docs.modx.com/revolution/2.x/developing-in-modx/advanced-development/modx-services/modmail
    Владимир Новопашин
    30 мая 2017, 17:24
    0
    1) Вывод ошибки должен быть таким образом:
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
    Т.к. выводить вам нужно не ошибку плагина, а ошибку именно сервиса отправки почты

    2) После этого можно прочитать что MAIL_SENDER указан неверно — должен быть адрес почты.
    $modx->mail->set(modMail::MAIL_SENDER, $modx->config['emailsender']);
    3) Чтобы получить адрес отправителя из системных настроек нужно писать:
    $modx->config['emailsender']
    а никак не просто 'emailsender'
      Alexander
      30 мая 2017, 17:40
      0
      Спасибо! Всё заработало!
      <?php
      $message = 'Hi, a new User signed up: '.$hook->getValue('fullname')
       . ' with email '.$hook->getValue('email').'.';
      $modx->getService('mail', 'mail.modPHPMailer');
      $modx->mail->set(modMail::MAIL_BODY,$message);
      $modx->mail->set(modMail::MAIL_FROM,$modx->getOption('emailsender'));
      $modx->mail->set(modMail::MAIL_FROM_NAME,'Jerrys Site');
      $modx->mail->set(modMail::MAIL_SENDER,$modx->config['emailsender']);
      $modx->mail->set(modMail::MAIL_SUBJECT,'New User Signed Up');
      $modx->mail->address('to','xndr.xndr@yandex.ru');
      $modx->mail->setHTML(true);
      if (!$modx->mail->send()) {
          $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$err);
      }
      $modx->mail->reset();
      /* tell our snippet we're good and can continue */
      return true;
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3