AjaxForm не отправляет письмо

Всем привет!

Прошу помощи: на сайте создал всплывающее окно, открывающееся по кнопке, с заказом обратного звонка, всё как обычно, реализовано с помощью ajaxform, вот код вывода сниппета:

[[AjaxForm?
    &snippet=`FormIt`
    &form=`tpl.AjaxForm`
    &emailTpl=`sentEmailTpl`
    &emailSubject=`Тестовое сообщение`
    &emailTo=`mm@yandex.ru`
    &successMessage=`Сообщение успешно отправлено`
    &validate=`name:required,email:required `
    &validationErrorMessage=`В форме содержатся ошибки!`
    ]]

вот чанк tpl.AjaxForm:

<h2>ЗАКАЗАТЬ ЗВОНОК</h2>

					<form id="contact" name="contact" action="" method="post" class="ajax_form">
		<label class="control-label" for="af_name">[[%af_label_name]]</label>
			<input type="text" id="af_name" name="name" value="[[+fi.name]]" placeholder="" class="span4" /><br />
			<span class="error_name">[[+fi.error.name]]</span>
		<label class="control-label" for="af_email">[[%af_label_email]]</label>
			<input type="email" id="af_email" name="email" value="[[+fi.email]]" placeholder="" class="span4" /><br />
			<span class="error_email">[[+fi.error.email]]</span>

						<button type="submit" class="btn btn-primary">[[%af_submit]]</button>

						[[+fi.success:is=`1`:then=`
		<div class="alert alert-success">[[+fi.successMessage]]</div>
	`]]
	[[+fi.validation_error:is=`1`:then=`
		<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
	`]]
					</form>

вот чанк sentEmailTpl:

[[+name]] <br />
[[+email]] <br />
[[+message]]

Всё валидируется, пишет, что письмо отправлено, но на почту ничего не приходит! Друзья, проверьте, пожалуйста, код, возможно у меня уже глаз замылился и я не вижу простейшей ошибки? Подскажите, в какую сторону можно копать?

Ещё момент: на сайте реализован отдельный php-скрипт отправки почты — он работает без проблем… возможно, необходимо покопаться в настройках formIt или ajaxForm, просто я не смог найти нужных параметров…

разумеется, почту забил правильно — тысячу раз проверил!)))

Подскажите, пожалуйста, буду очень признателен!

Comments

Может все-таки не кешируемым сниппет прописать? [[!AjaxForm… А так подобные вещи уже обсуждались не раз здесь, мы AjaxForm не используем, а используем form-процессор.

Николай, благодарю за оперативный ответ! К сожалению, не помогло...(

Мне кажется, что тут сам formIt не отрабатывает… просто не догоняю, как это можно проверить!

Судя по тому, что страница выводит «Внимание! Телефон может содержать только цифры.», все-таки сам сниппет отрабатывает. Скорее всего просто с сайта почта на отправляется. Поставьте Console и проверьте в принципе отправку почты, выполнив два отдельных кода:

  1. Просто через функцию mail()
print (int)mail('test@some.host', 'subject', 'message');
  1. Через MODX:
print (int)$modx->user->sendEmail('message');

Желательно, чтобы оба варианта вернули 1. Просто есть подозрение, что ваш сервер просто не отправляет почту. В остальном, я вам больше ничем не помогу. Там так все замучено (AjaxForm использует еще FormIt, в итоге отлаживать надо и то и другое), что даже я, потратив 15 минут, не смог получить вменяемого результата. Все-таки процессоры прозрачней, там отладка лучше.

Если еще актуально. Нахожу вашу проблему похожей на мое приключение В вызове сниппета добавьте добавьте хук «email».

&hooks=`email`

Не знаю, ответит ли кто-то нибудь мне здесь или нет. Выполнил в консоли 2 команды, вернули 1, только после второй не пришло письмо (интересно, на какой адрес оно отправилось?) У меня стоит в ajaxform &hooks=email, но письмо всё равно не приходит. Пробовал отдельно formit делать, письмо приходит, но хотелось бы без перезагрузки страницы через ajaxform запустить. У меня на другом сайте письма отправляются нормально через ajaxform, при том, что оба сайта на одном сервере находятся.

vladim-filip, дайте хоть на код взглянуть))) Какой вызов сниппета, какой чанк? И что значит: "вернули один"?

Николай выше писал: " Поставьте Console и проверьте в принципе отправку почты, выполнив два отдельных кода: 1. Просто через функцию mail()

print (int)mail('test@some.host', 'subject', 'message');
  1. Через MODX:
print (int)$modx->user->sendEmail('message');

Желательно, чтобы оба варианта вернули 1." Вот тут у меня возвращается 1 в обоих вариантах.

Вот код вызова сниппета:

[[!AjaxForm?
    &snippet=`FormIt`
    &form=`vogelCallbackFormTpl`
    &hooks=`spam,FormItSaveForm,email`
    &formName=`Обратный звонок`
    &formFields=`name,phone`
    &fieldNames=`name==Имя,phone==Телефон`
    &emailSubject=`Заявка на обратный звонок с сайта VogelAndNootCenter`
    &emailTo=`vfilippov@engne.ru`
    &emailBCC=`vladim-filip@yandex.ru`
    &emailFrom=`info@vogelnootcenter.ru`
    &emailFromName=`VogelAndNootCenter`
    &emailTpl=`vogelCallbackMailTpl`
    &customValidators=`isCaptchaValid`
    &validate=`name:required:minLength=^1^:maxLength=^30^,phone:required:minLength=^7^:maxLength=^20^,pers_data:required,captcha1:isCaptchaValid`
    &validationErrorMessage=`Пожалуйста, исправьте ошибки!`
]]

Вот код формы vogelCallbackFormTpl:

<div class="callback-header">
    <a href="#" class="callback-close" onclick=""></a>
</div>

<div class="callback-body">
    <form action="" method="post" class="ajax_form af_example callback_form" id="callback_form" enctype="multipart/form-data" role="form">

        <div class="form-group">
            <div class="controls">
                <label for="cb_name">Ваше имя *</label>
                <input type="text" minlength="1" maxlength="30" id="cb_name" name="name" value="[[+fi.name]]" class="form-control cb_name" required="required" />
                <span class="error_name">[[+fi.error.name]]</span>
            </div>
        </div>

        <div class="form-group">
            <div class="controls">
                <label for="cb_phone">Телефон *</label>
                <input type="text" id="cb_phone" name="phone" value="[[+fi.phone]]" autocomplete="tel-national" class="form-control cb_phone" oninput="this.value=this.value.replace(/[^0-9-+()]/g,'');" minlength="7" maxlength="20" required="required" />
                <span class="error_phone">[[+fi.error.phone]]</span>
            </div>
        </div>

        <div class="form-group controls captcha1">
            <img class="img-captcha1" src="/assets/captcha/captcha1.php?rnd=[[!RandomNumber]]" data-src="/assets/captcha/captcha1.php" width="120" style="display:inline-block;">
            <span class="refresh-captcha1-icon"></span>
            <input id="captcha" name="captcha" type="text" placeholder="Введите код" class="form-control captcha1-input" required="required" value="" minlength="3" maxlength="3" autocomplete="off" oninput="this.value=this.value.replace(/[^0-9-+()]/g,'');">

        </div>

        <div class="error_captcha_div">
            <span class="error_captcha"></span>
        </div>

        <div class="form-group">
            <div class="controls">
                <input type="checkbox" name="pers_data" required="required" id="pers_data">
                <label for="pers_data" class="pers_label">Согласен на обработку персональных данных</label>
                <span class="error_pers_data"></span>
            </div>
        </div>

        <p class="pers_comment">Ставя отметку, я даю свое согласие на обработку моих персональных данных в соответствии с законом №152-ФЗ «О персональных данных» от 27.07.2006</p>

        <div class="form-group">
            <div class="controls">
                <input type="submit" class="btn btn-red cb_submit" id="cb_submit_button" value="Перезвоните мне" />
            </div>
        </div>

        [[+fi.validation_error:is=`1`:then=`
        <div class="alert alert-danger">[[+fi.validation_error_message]]</div>
        `]]
    </form>

    <div class="cb_success_mess">
        Ваше сообщение отправлено!<br/>В ближайшее время с Вами свяжется менеджер.
    </div>

    <div class="callback_footer">

    </div>
</div>

Ё-моё. Разобрался. У меня в &validate идёт поле captcha1, а в форме captcha просто называется. Теперь всё работает.