Не работает 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
Проблема такая
Сделал регистрацию без активации и автогенерацией пароля--это всё работает.
Так-же надо сделать уведомление этому юзеру с паролем.
Попытался реализовать как на 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;
Комментарии: 3
$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
1) Вывод ошибки должен быть таким образом:
2) После этого можно прочитать что MAIL_SENDER указан неверно — должен быть адрес почты.
$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'
Спасибо! Всё заработало!
<?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;
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.