MODX Revolution отправляет письма через PHPMailer, но по умолчанию — в режиме функции PHP mail(), за которой на большинстве хостингов нет почтового сервера. Всё переключение делается в системных настройках, без дополнений. Ниже — подключение к fmailer.
| Параметр | Значение |
|---|---|
| SMTP-хост | smtp.fmailer.ru |
| Порт | 587 |
| Шифрование | STARTTLS (соединение переводится в TLS до авторизации) |
| Логин | Логин SMTP-токена вашего домена |
| Пароль | Пароль этого токена — показывается один раз, при создании |
Перейдите в Система → Системные настройки и отфильтруйте по области «Почта»:
| Настройка | Значение |
|---|---|
mail_use_smtp | Да |
mail_smtp_hosts | smtp.fmailer.ru |
mail_smtp_port | 587 |
mail_smtp_prefix | tls |
mail_smtp_auth | Да |
mail_smtp_user | Логин SMTP-токена вашего домена |
mail_smtp_pass | Пароль этого токена |
mail_smtp_helo | Домен вашего сайта, например example.ru |
emailsender | noreply@mail.example.ru — на подтверждённом домене |
emailreply | support@mail.example.ru |
tls для порта 587 или ssl для порта 465 — и не путайте: другая комбинация приведёт к ошибке рукопожатия. После сохранения обязательно очистите кэш сайта — системные настройки кэшируются.
Самая частая ошибка в MODX-формах — подставить адрес посетителя в emailFrom. Ваши подписи DKIM и запись SPF за чужой домен не отвечают, поэтому такое письмо не проходит DMARC. Правильно так:
[[!FormIt?
&hooks=`email,redirect`
&emailTpl=`ContactEmailTpl`
&emailTo=`sales@mail.example.ru`
&emailFrom=`noreply@mail.example.ru`
&emailFromName=`Сайт`
&emailReplyTo=`[[+email]]`
&emailSubject=`Заявка с сайта`
&redirectTo=`5`
&validate=`name:required,email:email:required,message:required`
]] Отправьте форму обратной связи или запросите восстановление пароля в админке — оба сценария идут через настроенный почтовый класс. Ошибки появятся в Управление → Отчёты → Журнал ошибок; для подробностей временно поднимите log_level до уровня отладки.
| Симптом | Причина и решение |
|---|---|
| Настройки сохранены, ничего не изменилось | Не очищен кэш сайта. |
| Ошибка подключения | Пустой mail_smtp_prefix или заблокированный порт — попробуйте 8587. |
| Отказ авторизации | Неверные доступы либо mail_smtp_auth выключен. |
| Форма отправляется, письма нет | В emailFrom адрес посетителя — перенесите его в emailReplyTo. |
| Письма в спаме | emailsender не на подтверждённом домене. |
| Кириллица «кракозябрами» | Проверьте mail_charset — должно быть UTF-8. |
Система → Системные настройки, фильтр по области «Почта» (mail). Переведите mail_use_smtp в «Да» и заполните mail_smtp_hosts, mail_smtp_port, mail_smtp_user, mail_smtp_pass, mail_smtp_auth и mail_smtp_prefix. После изменений очистите кэш сайта.
tls для порта 587 (соединение поднимается в TLS через STARTTLS) или ssl для порта 465 (шифрование с первого байта). Пустое значение означает нешифрованное соединение, при котором сервер откажет в авторизации. Это самая частая причина ошибки отправки в MODX.
Если mail_use_smtp выключен, MODX использует функцию PHP mail(), а за ней на большинстве хостингов нет почтового сервера. Включите SMTP. Если он уже включён, проверьте, что mail_smtp_auth тоже в «Да» — без него учётные данные вообще не отправляются.
Проверьте параметр emailFrom: если туда подставляется адрес посетителя из формы, письмо не проходит DMARC, потому что ваши DKIM и SPF за чужой домен не отвечают. Оставьте в emailFrom свой адрес, а адрес посетителя передавайте в emailReplyTo.
Ошибки почтового класса попадают в журнал MODX: Управление → Отчёты → Журнал ошибок. Для подробностей временно поднимите уровень логирования в системной настройке log_level до «Отладка» и повторите отправку.
Проверьте системные настройки emailsender и emailreply — в них должен стоять адрес на подтверждённом домене. По умолчанию туда попадает адрес, указанный при установке, и он часто оказывается на другом домене.