Не отправляются письма с сайта на MODX: причины и решение
Если вы столкнулись с ситуацией, когда на одном домене почта работает, а на другом - нет, при этом ошибки не выводятся, а данные в форму сохраняются, проблема чаще всего кроется в настройках сервера, почтового драйвера или конфигурации сниппетов. Ниже разберём основные причины и способы диагностики.
Почему письма не отправляются, но ошибок нет
В MODX Revolution (версии 2.8.4, 2.8.7, 2.8.8) отправка писем может молча проваливаться по нескольким причинам:
- Некорректный почтовый драйвер - используется
mailвместоsmtp, и сервер блокирует функциюmail(). - Проблемы с SPF/DKIM - письмо уходит, но попадает в спам или отбрасывается почтовиком.
- Ошибки в сниппете AjaxForm - неверно указан
&emailToили отсутствует хукemail. - Кэширование или конфликт плагинов - особенно если сайт перенесён с другого домена.
Как проверить отправку почты в MODX
1. Включите отладку QuickEmail
Если используете сниппет QuickEmail, добавьте параметр &debug=1. Это покажет, пытается ли система отправить письмо и какие ошибки возникают на уровне PHP.
2. Проверьте настройки почтового драйвера
Зайдите в Системные настройки → Почта. Убедитесь, что mail_use_smtp включён, а mail_smtp_host, mail_smtp_port, mail_smtp_user и mail_smtp_pass указаны корректно. Для популярных почтовиков (Yandex, Gmail) используйте порт 465 с SSL.
3. Проверьте логи ошибок
Откройте файл core/cache/logs/error.log - там могут быть записи о неудачных попытках отправки, которые не выводятся на экран.
4. Протестируйте отправку через простой сниппет
Создайте временный ресурс и вызовите:
[[!AjaxForm? &hooks=`email` &emailTo=`test@mail.ru` &emailTpl=`testTpl`]]Если письмо не приходит, проблема в настройках сервера, а не в форме.
Частые ошибки при переносе сайта на другой домен
При копировании проекта на новый домен часто забывают изменить:
- Email в сниппетах - в примере выше указан
my7@mail.ru, но реальный ящик может быть другим. - Путь к шаблонам писем - если чанк
callbackFormSendне существует на новом сайте, письмо не сформируется. - Настройки DNS - для нового домена нужно настроить SPF-запись, иначе письма будут отклоняться.
Что делать, если письма уходят в спам
Даже если отправка работает, письма могут не доходить до пользователя. Добавьте ящик отправителя в белый список почтового клиента, но глобально проблема решается через:
- Настройку SPF и DKIM для домена.
- Использование SMTP-сервера с репутацией (например, Яндекс.Почта для домена).
- Проверку заголовков письма через сервисы вроде mail-tester.com.
Пошаговая инструкция: восстановление отправки писем
- Проверьте версию PHP - на хостинге должна быть 7.4 или 8.0, совместимая с вашей версией MODX.
- Отключите все плагины, связанные с почтой (например,
FormItилиQuip), и включите их по одному, чтобы найти конфликт. - Обновите системные настройки - сбросьте
mail_use_smtpи введите данные заново. - Проверьте права на папку
core/cache/- если кэш не пишется, отправка может блокироваться. - Протестируйте отправку через PHP-скрипт - загрузите на сервер простой файл с функцией
mail(), чтобы исключить проблемы MODX.
Если после всех шагов письма всё ещё не отправляются, обратитесь в техподдержку хостинга - возможно, они блокируют исходящую почту на уровне сервера.