Modx Revo не отправляет письма, в логах тишина. Неочевидная проблема, о которой нужно знать
На днях попросили прикрутить антиспам фильтр для отправки сообщений из формы обратной связи на Modx Revo. Настраивал такое не в первый раз, но тут что-то пошло не по плану... AjaxForm радостно отчитывался, что сообщение отправлено, но на указанный почтовый ящик ничего не приходило. И что самое удивительное, в логах мертвая тишина – никаких ошибок.
Можно сломать голову в поисках причин таинственного исчезновения почты, если не знать одного нюанса в работе хостинга и настройки отправки сообщений в Modx Revo.
Стандартный набор чанков для отправки сообщений с помощью AjaxForm и FormIt с подключенной проверкой от гугла (recaptcha v2) выглядит следующим образом:
callback
[[!AjaxForm? &snippet=`FormIt` &hooks=`recaptchav2,email` &form=`callbackForm` &emailSubject=`тема сообщения` &emailTo=`test@domain.ru` &emailTpl=`emailTpl` &validate=`phone:required,g-recaptcha-response:required` &validationErrorMessage=`В форме содержатся ошибки!` &successMessage=`Данные успешно отправлены` ]]
callbackForm
<form method="post" class="ajax_form" action=""> <input type="text" name="phone" value="[[+fi.phone]]" placeholder="Номер телефона"> <span class="error_phone">[[+fi.error.phone]]</span> [[!recaptchav2_render]] [[!+fi.error.recaptchav2_error]] <span class="error_g-recaptcha-response error"></span> <input name="submit" type="submit" value="Отправить"> </form>
emailTpl
номер телефона: [[+phone]]
Как видите, все имена полей совпадают (в приведенном примере передается значение единственного поля 'phone' ) и по идее всё должно работать, но почта не приходила. Я долго мучился, чтобы разобраться что же здесь не так и оказалось что всему виной адрес электронной почты отправителя.
В системных настройках Modx в поле "Адрес электронной почты" (emailsender) был указан email администратора, отличный от того домена, на котором работал данный сайт. Допустим emailsender содержит admin@mail.ru, а домен у сайта otherdomain.ru.
На хостинге стоял запрет на пересылку таких сообщений, если домен не соотвествует адресу отправителя. Надеюсь этот пост сбережет кому-то время и нервные клетки.
Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.