@adam_carraway

Hook почему не срабатывает?

Есть форма которая находится в чанке
[[!AjaxForm?
        &snippet=`FormIt`
        &form=`callbackTpl`
        &hooks=`email,FormItSaveForm,spam`
        &emailTpl=`emailTpl`
        &emailTo=[[++adminMail]]
        &validate=`phone:required,name:required,email:blank`
        &validationErrorMessage=`В форме содержатся ошибки!`
        &successMessage=`Ваша заявка в работе`
        &emailSubject=`Обратный звонок`
        &emailFrom=`no-reply@mail.su`
    ]]

Я создал новый сниппет в корне
5cdea3af293b7578458048.png
Содержание customhook
<?php
  $to = "mymail@mail.ru";
  $subject = "Robot - Робот";
  $message = "Message, сообщение!";
  mail ($to, $subject, $message);

Потом я добавил название сниппета в хук формы
[[!AjaxForm?
        &snippet=`FormIt`
        &form=`callbackTpl`
        &hooks=`email,FormItSaveForm,spam,customhook`
        &emailTpl=`emailTpl`
        &emailTo=[[++adminMail]]
        &validate=`phone:required,name:required,email:blank`
        &validationErrorMessage=`В форме содержатся ошибки!`
        &successMessage=`Ваша заявка в работе`
        &emailSubject=`Обратный звонок`
        &emailFrom=`no-reply@main.su`
    ]]

Хочу чтобы после того как форма отправиться, на почту пришло смс. Но почему-то ничего не срабатывает, что я делаю не так?
  • Вопрос задан
  • 29 просмотров
Решения вопроса 2
Sanes
@Sanes
Попробуйте очередность поменять. Spam точно быть пенрвым. FormItSaveForm вроде раньше как-то влиял на email, если разный порядок.
Ответ написан
himuro
@himuro
Full stack web developer
1.Уберите все хуки,кроме вашего
2. Отправьте письмо немного иначе и пологируйте результат:
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'mymail@mail.ru');
$modx->mail->set(modMail::MAIL_FROM_NAME,'Имя');
$modx->mail->set(modMail::MAIL_SENDER,'noreply@mail.ru');
$modx->mail->set(modMail::MAIL_SUBJECT,'Тема');
$modx->mail->address('to', 'email@mail.ru');
$modx->mail->setHTML(true);

$sent = $modx->mail->send();
if ($sent) {
$output = 'Mail sent';
} else {
$output = 'An error occurred while trying to send the email'.$modx->mail->mailer->ErrorInfo;
}
$modx->log(modX::LOG_LEVEL_ERROR,$log_prefix.$output);

3. Код формы покажите пожалуйста
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы