Не отправляются письма с сайта на 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.

    Пошаговая инструкция: восстановление отправки писем

    1. Проверьте версию PHP - на хостинге должна быть 7.4 или 8.0, совместимая с вашей версией MODX.
    2. Отключите все плагины, связанные с почтой (например, FormIt или Quip), и включите их по одному, чтобы найти конфликт.
    3. Обновите системные настройки - сбросьте mail_use_smtp и введите данные заново.
    4. Проверьте права на папку core/cache/ - если кэш не пишется, отправка может блокироваться.
    5. Протестируйте отправку через PHP-скрипт - загрузите на сервер простой файл с функцией mail(), чтобы исключить проблемы MODX.

    Если после всех шагов письма всё ещё не отправляются, обратитесь в техподдержку хостинга - возможно, они блокируют исходящую почту на уровне сервера.

    Часто задаваемые вопросы