Modx Revo не отправляет письма, в логах тишина. Неочевидная проблема, о которой нужно знать

Сентябрь, 13th 2023Рубрика: Web 2100
Подписаться на комментарии по RSS

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.

На хостинге стоял запрет на пересылку таких сообщений, если домен не соотвествует адресу отправителя. Надеюсь этот пост сбережет кому-то время и нервные клетки.

Подписывайтесь на канал Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

ваш комментарий будет опубликован после проверки
на указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.