Пример простой контактной формы связи
Последнее обновление Sep 3rd, 2026 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn moreЗдесь мы приведём простой пример контактной страницы.
Мы предполагаем, что вы уже установили FormIt через Управление пакетами и ознакомились с разделом Как использовать.
В этом примере контактная форма проверяет входные данные, отправляет email и перенаправляет на ресурс с ID 123.
Валидация (см. Валидаторы FormIt) в этом примере снимает теги с сообщения, проверяет email и требует заполнения всех полей через &validate.
Форма также использует reCAPTCHA v3 через хук recaptcha (FormIt 5.2.1+). В системных настройках задайте:
-
formit.recaptcha_site_key -
formit.recaptcha_secret_key - при необходимости
formit.recaptcha_min_score(по умолчанию0.5) -
formit.frontend_js=js/web/formit.js(нужен для запроса токена)
Тег сниппета¶
[[!FormIt?
&hooks=`recaptcha,email,redirect`
&emailTpl=`MyEmailChunk`
&emailTo=`[email protected]`
&emailFrom=`[[++emailsender]]`
&redirectTo=`123`
&validate=`nospam:blank,
name:required,
email:email:required,
subject:required,
text:required:stripTags,
numbers:required,
colors:required`
]]
Убедитесь, что
emailFromустановлен в[[++emailsender]], иначе будет использоваться email из поля формы. Большинство хостингов отклоняют письма с адресом отправителя с чужого домена.
Контактная форма¶
<h2>Контактная форма</h2>
<form action="[[~[[*id]]]]" method="post" class="form">
[[!+fi.validation_error_message]]
[[!+fi.successMessage]]
<div class="error">[[!+fi.error_message]]</div>
<input type="hidden" name="nospam" value="" />
<div class="form-field">
<label for="name">Имя:</label>
<input type="text" name="name" id="name" value="[[!+fi.name]]" />
[[!+fi.error.name]]
</div>
<div class="form-field">
<label for="email">Email:</label>
<input type="text" name="email" id="email" value="[[!+fi.email]]" />
[[!+fi.error.email]]
</div>
<div class="form-field">
<label for="subject">Тема:</label>
<input type="text" name="subject" id="subject" value="[[!+fi.subject]]" />
[[!+fi.error.subject]]
</div>
<div class="form-field">
<label for="text">Сообщение:</label>
<textarea name="text" id="text" cols="55" rows="7">[[!+fi.text]]</textarea>
[[!+fi.error.text]]
</div>
<div class="form-field">
<label for="numbers">Числа:</label>
<select name="numbers" id="numbers">
<option value="">Выберите вариант...</option>
<option value="one" [[!+fi.numbers:FormItIsSelected=`one`]]>Один</option>
<option value="two" [[!+fi.numbers:FormItIsSelected=`two`]]>Два</option>
<option value="three" [[!+fi.numbers:FormItIsSelected=`three`]]>Три</option>
</select>
[[!+fi.error.numbers]]
</div>
<div class="form-field">
<label>Цвета:</label>
<input type="hidden" name="colors[]" value="" />
<ul>
<li><label><input type="checkbox" name="colors[]" value="red" [[!+fi.colors:FormItIsChecked=`red`]] /> Красный</label></li>
<li><label><input type="checkbox" name="colors[]" value="blue" [[!+fi.colors:FormItIsChecked=`blue`]] /> Синий</label></li>
<li><label><input type="checkbox" name="colors[]" value="green" [[!+fi.colors:FormItIsChecked=`green`]] /> Зелёный</label></li>
</ul>
[[!+fi.error.colors]]
</div>
<div class="form-field">
[[+formit.recaptcha_html]]
[[!+fi.error.recaptcha]]
</div>
<div class="form-buttons">
<input type="submit" value="Отправить" />
</div>
</form>
MyEmailChunk (Tpl чанк)¶
Это чанк письма FormIt.
<br />[[+name]] ([[+email]]) написал(а): <br />
[[+text]]
Форма уходит, а письма нет¶
FormIt шлёт почту через системные настройки MODX. Если форма «срабатывает» (редирект, success), а письма в ящике нет, сначала проверяйте SMTP и доставку, а не только хуки FormIt.
1. Проверьте сам FormIt¶
- Смотрите ошибки на странице:
[[!+fi.error_message]],[[!+fi.validation_error_message]]и ошибки полей вроде[[!+fi.error.email]]. - Держите порядок
&hooks=осмысленным: проверки (напримерrecaptcha) доemail,redirectв конце. Еслиemailпадает, следующие хуки могут не отработать так, как вы ждёте. - Укажите в
&emailTo=адрес, который вы реально читаете. - Оставьте
&emailFrom=как[[++emailsender]](или другой адрес вашего домена). Не ставьте email посетителя вFrom. - Убедитесь, что чанк
emailTplсуществует и рендерится. Неверное имя чанка ломает email-хук без явной ошибки для посетителя.
2. Отделите FormIt от SMTP через QuickEmail¶
Установите QuickEmail (Bob Ray) через Управление пакетами. На временном ресурсе поставьте:
[[!QuickEmail? &debug=`1`]]
Откройте ресурс на сайте. QuickEmail отправит тестовое письмо тем же стеком MODX, что и FormIt, и выведет подробный лог.
- Если QuickEmail не шлёт письмо, сначала поправьте Система → Системные настройки → область Mail.
- Если QuickEmail работает, а FormIt нет, снова проверьте
&emailTo,&emailTpl, хуки и папку «Спам».
Уберите вызов QuickEmail после проверки. Публичная страница с &debug= может светить параметры почты.
Полная настройка SMTP, доставляемость и примеры провайдеров: Sending mail (EN). Ключи настроек те же в русской панели.
3. Типичные SMTP-настройки (MODX 3)¶
Включите mail_use_smtp и обычно mail_smtp_auth. Задайте хост, порт, логин, пароль и шифрование (mail_smtp_secure: tls или ssl, либо пустое значение плюс mail_smtp_autotls, если так удобнее провайдеру).
| Провайдер | mail_smtp_hosts |
Порт | Secure | Заметки |
|---|---|---|---|---|
| Gmail / Google Workspace | smtp.gmail.com |
587 или 465 |
tls (587) или ssl (465) |
Нужен пароль приложения или OAuth. Обычный пароль аккаунта чаще всего не проходит. |
| Яндекс Почта | smtp.yandex.ru (или smtp.yandex.com) |
465 или 587 |
ssl (465) |
Создайте пароль приложения в настройках почтовых клиентов Яндекса. |
| Mail.ru | smtp.mail.ru |
465 или 587 |
ssl / tls |
Пароль приложения из настроек безопасности Mail.ru. |
| Rambler | smtp.rambler.ru |
465 |
ssl |
Актуальные значения смотрите в справке Rambler. Правила доступа меняются. |
| Mailgun | smtp.mailgun.org (EU: smtp.eu.mailgun.org) |
587, 465 или 2525 |
tls / ssl по порту |
Логин и пароль SMTP берутся в credentials домена в Mailgun. |
| Свой VPS / хостинг | SMTP-хост от провайдера | Часто 587 или 465 |
По документации хоста | Исходящий порт 25 часто закрыт. Используйте авторизованную отправку на 587/465. |
Значение emailsender должно быть адресом, который провайдер разрешает (верифицированный домен для Mailgun/SES или ящик, под которым вы логинитесь в SMTP).
Тема на форуме, которая привела к этому разделу: Can’t get FormIt to send form.
Смотрите также¶
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn more










