Документация / MODX

Отправка почты в MODX через SMTP

MODX Revolution отправляет письма через PHPMailer, но по умолчанию — в режиме функции PHP mail(), за которой на большинстве хостингов нет почтового сервера. Всё переключение делается в системных настройках, без дополнений. Ниже — подключение к fmailer.

Логин и пароль можно получить на странице управления токенами домена.

Параметры подключения

ПараметрЗначение
SMTP-хостsmtp.fmailer.ru
Порт587
ШифрованиеSTARTTLS (соединение переводится в TLS до авторизации)
ЛогинЛогин SMTP-токена вашего домена
ПарольПароль этого токена — показывается один раз, при создании
Каждый режим доступен и на высоком порту: 8465 (SSL/TLS), 8587 (STARTTLS) и 8025 (без шифрования). Многие хостинги и облака блокируют исходящие 25, 465 и 587 — если соединение отваливается по таймауту, используйте соответствующий высокий порт

Системные настройки

Перейдите в Система → Системные настройки и отфильтруйте по области «Почта»:

НастройкаЗначение
mail_use_smtpДа
mail_smtp_hostssmtp.fmailer.ru
mail_smtp_port587
mail_smtp_prefixtls
mail_smtp_authДа
mail_smtp_userЛогин SMTP-токена вашего домена
mail_smtp_passПароль этого токена
mail_smtp_heloДомен вашего сайта, например example.ru
emailsendernoreply@mail.example.ru — на подтверждённом домене
emailreplysupport@mail.example.ru
Пустое значение означает соединение без шифрования, при котором сервер отклонит авторизацию. Ставьте tls для порта 587 или ssl для порта 465 — и не путайте: другая комбинация приведёт к ошибке рукопожатия.

После сохранения обязательно очистите кэш сайта — системные настройки кэшируются.

Формы обратной связи на FormIt

Самая частая ошибка в 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.

Частые вопросы

Где в MODX настраивается отправка через SMTP?

Система → Системные настройки, фильтр по области «Почта» (mail). Переведите mail_use_smtp в «Да» и заполните mail_smtp_hosts, mail_smtp_port, mail_smtp_user, mail_smtp_pass, mail_smtp_auth и mail_smtp_prefix. После изменений очистите кэш сайта.

Что писать в mail_smtp_prefix?

tls для порта 587 (соединение поднимается в TLS через STARTTLS) или ssl для порта 465 (шифрование с первого байта). Пустое значение означает нешифрованное соединение, при котором сервер откажет в авторизации. Это самая частая причина ошибки отправки в MODX.

Почему MODX не отправляет письма?

Если mail_use_smtp выключен, MODX использует функцию PHP mail(), а за ней на большинстве хостингов нет почтового сервера. Включите SMTP. Если он уже включён, проверьте, что mail_smtp_auth тоже в «Да» — без него учётные данные вообще не отправляются.

Почему форма FormIt отправляется, но письмо не приходит?

Проверьте параметр emailFrom: если туда подставляется адрес посетителя из формы, письмо не проходит DMARC, потому что ваши DKIM и SPF за чужой домен не отвечают. Оставьте в emailFrom свой адрес, а адрес посетителя передавайте в emailReplyTo.

Как посмотреть причину ошибки отправки в MODX?

Ошибки почтового класса попадают в журнал MODX: Управление → Отчёты → Журнал ошибок. Для подробностей временно поднимите уровень логирования в системной настройке log_level до «Отладка» и повторите отправку.

Почему письма из MODX попадают в спам?

Проверьте системные настройки emailsender и emailreply — в них должен стоять адрес на подтверждённом домене. По умолчанию туда попадает адрес, указанный при установке, и он часто оказывается на другом домене.

Что дальше