FormIt не принимает параметр emailTo

Приветствую!
Перенес сайт с таймвеба на рег ру, как и все обычные пользователи т.е. замена путей, очистка кеша, подключение бд, но появилась беда с FormIt.

1. До этого вызывался AjaxForm со сниппетом FormIt, параметре &form был указ через INLINE и конечно же работал нормально. После переноса начал отображаться массив, заменил INLINE на чанк, форма появилась.

[[!AjaxForm?
        	&snippet=`FormIt`
        	&form=`formZvonok`
        	&emailTpl=`letterZvonok.sent`
        	&hooks=`spam,email`
        	&emailSubject=`Обратный звонок`
        	&emailTo=`email@gmail.com`
        	&validate=`callback_name:required,callback_time:required,callback_phone:required`
        	&validationErrorMessage=`В форме содержатся ошибки!`
        	&successMessage=`Сообщение отправлено!`
        ]]
2. Теперь при нажатии отправить форму в лог пишется ошибка
[FormIt] Пожалуйста, укажите получателя или получателей электронной почты.

&emailTo указан явно, так что не должно быть такого. Чтож, думал что-то с AjaxForm.
Вызывал тестовый FormIt без валидации, как бы должно отправляться письмо, но в лог опять пишется ошибка
[FormIt] Пожалуйста, укажите получателя или получателей электронной почты.


[[!FormIt?
&hooks=`email`
&emailTpl=`letterZvonok.sent`
&emailSubject=`Message`
&emailTo=`me@myemailaddress.com`
]]
<form id="contactForm" method="post" action="[[~[[*id]]]]">
<strong>Please use the form below to send us an email:</strong>
<div>
<label for="contact_name">Name </label><em>(required, at least 2 characters)</em><br />
<input id="contact_name" name="contact_name" value="[[!+fi.contact_name]]" />
</div>
<input name="submit" type="submit" value="Submit"/>
</div>
</form>
Письма отправляться, проверял через php.

Искал в инете и на иностранных тоже, ничего не нашел. Нашел только modx.pro/help/3801/ но ито проблема не решена.
Подскажите в чем проблема?
Константин Ильин
Константин Ильин
09 июля 2016, 15:11
modx.pro
10 076

Комментарии: 32

Павел Романов
09 июля 2016, 20:17
Попробуйте указать явно &emailFrom, причем, с тем же доменом, что и сайт.
    Константин Ильин
    10 июля 2016, 12:47
    Не очень понял
    &emailFrom=`From: Free Life <gmail@gmail.com>`
    Это ничего не дало
      Павел Романов
      10 июля 2016, 13:41
      Допустим, у Вас домен site.ru.
      Попробуйте в вызове указать параметр:
      [[!FormIt?
      &hooks=`email`
      &emailTpl=`letterZvonok.sent`
      &emailSubject=`Message`
      &emailTo=`me@myemailaddress.com`
      &emailFrom=`info@site.ru`
      ]]
Евгений Webinmd
09 июля 2016, 21:54
может у вас несколько форм вызывается на странице? попробуйте добавить параметр &submitVar
    Константин Ильин
    09 июля 2016, 23:32
    Вряд ли проблема в нем. Я использую AjaxForm который автоматический добавляет скрытое поле с индетификатором формы. Вызов FormIt для убедительности, что не работает из-за него.

    Как минимум интересно почему после переноса перестал воспринимать INLINE?
      Константин Ильин
      10 июля 2016, 11:49
      попробовал вызов на отдельной странице, письмо пришло.
      [[!FormIt?
      &hooks=`email`
      &emailTpl=`letterZvonok.sent`
      &emailSubject=`Message`
      &emailTo=`me@myemailaddress.com`
      ]]
      <form id="contactForm" method="post" action="[[~[[*id]]]]">
      <strong>Please use the form below to send us an email:</strong>
      <div>
      <label for="contact_name">Name </label><em>(required, at least 2 characters)</em><br />
      <input id="contact_name" name="contact_name" value="[[!+fi.contact_name]]" />
      </div>
      <input name="submit" type="submit" value="Submit"/>
      </div>
      </form>

      Пробую так же отдельный вызов AjaxForm, ошибка та же.
      в ht проверил php_flag register_globals Off
    Константин Ильин
    10 июля 2016, 16:47
    Чтож, по принципу если не работает твое смотри документацию, вставь то, что есть в документации.
    [[!AjaxForm?
    	&snippet=`FormIt`
    	&form=`tpl.AjaxForm.example`
    	&hooks=`email`
    	&emailSubject=`Тестовое сообщение`
    	&emailTo=`info@domain.com`
    	&validate=`name:required,email:required,message:required`
    	&validationErrorMessage=`В форме содержатся ошибки!`
    	&successMessage=`Сообщение успешно отправлено`
    ]]
    Вставил на страницу, других форм на ней нет. Пытаюсь отправить с пустыми полями, и только на поле email выдает ошибку, хотя в валидации указанно name и message. Пытаюсь проделать тоже самое на таймвебе, там все как и должно быть, настолько хорошо, что я вставляю два одинаковых вызова и они нормально работают.
    Formit и AjaxForm переустанавливал.
    Скоро лопнет голова…
      Михаил
      11 июля 2016, 11:39
      Настройка
      emailsender укажите тот емайл который указан в emailFrom
      Михаил
      11 июля 2016, 11:23
      Может проблема в настройке email_sender? Он должен совпадать с именем отправителя формы.
        Константин Ильин
        11 июля 2016, 11:43
        Сейчас попробовал снести сайт, установил голый modx, установил FormIt и Ajaxform.

        Поставил из документации вызов AjaxForm(выше мой коммент) — Все та же ошибка в логе.
        Хостинг reg.ru

        Нашел строчку которая выдает эту ошибку в лог
        /* check email to */
                $emailTo = $this->modx->getOption('emailTo',$this->formit->config,'');
                $emailToName = $this->modx->getOption('emailToName',$this->formit->config,$emailTo);
                if (empty($emailTo)) {
                    $this->errors['emailTo'] = $this->modx->lexicon('formit.email_no_recipient');
                    $this->modx->log(modX::LOG_LEVEL_ERROR,'[FormIt] '.$this->modx->lexicon('formit.email_no_recipient'));
                    return false;
                }
        но пока это ничего не дает.
          Михаил
          11 июля 2016, 11:45
          emailsender такой же как и &emailFrom?
            Константин Ильин
            11 июля 2016, 12:17
            э как бы emailFrom вообще не вводил никуда.

            [[!AjaxForm?
            	&snippet=`FormIt`
            	&form=`tpl.AjaxForm.example`
            	&hooks=`email`
            	&emailSubject=`Тестовое сообщение`
            	&emailTo=`мой адрес`
            	&validate=`name:required,email:required,message:required`
            	&validationErrorMessage=`В форме содержатся ошибки!`
            	&successMessage=`Сообщение успешно отправлено`
            ]]
            В параметрах сниппета FormIt по умолчанию указал emailFrom (asdasd@mail.ru), вот его описание:
            Хук «email». Необязательный параметр. Если этот параметр установлен, то он будет определять адрес электронной почты отправителя письма. Если не установлен, то сначала адрес электронной почты будет искаться в данных формы в поле с именем «email», если это поле не будет найдено, то будет использоваться адрес электронной почты из системной настройки «emailsender».

            Т.к. ошибка говорит о том что нет получаетелей
            Пожалуйста, укажите получателя или получателей электронной почты.
            пробовал указать параметрах сниппета FormIt параметр emailTo — туда вставил свой email.
            Отправляю форму (не заполнял ничего), пишет, что успешно отправлена, но ни письма ни проверки на валидацию.
            emailsender — стоит совсем другой email
              Михаил
              11 июля 2016, 12:23
              Вот сделай их одинаковыми
                Константин Ильин
                11 июля 2016, 12:29
                emailFrom = emailsender
                Даже в вызове поставил emailFrom такой же.

                Не помогло.
                Я не понимаю причем тут emailFrom?

                Если ошибка говорит:
                Пожалуйста, укажите получателя или получателей электронной почты.
                т.е. проблема с emailTo
      Антон Левиц
      Антон Левиц
      11 июля 2016, 12:36
      Сегодня после переноса одного сайта на сервер vds словил такую же ошибку. Помог переход версии php на сервере c 5.4 на php 5.5
        Константин Ильин
        11 июля 2016, 12:40
        Это была одна из первых мыслей)

        PHP logo
        PHP Version 5.6.14
          Антон Левиц
          Антон Левиц
          11 июля 2016, 12:54
          а на реге какой хостинг — шара или вдс? если шара, то пиши в поддержку, чтобы решили проблему, т.к. дело в настройках сервера. а лучше вообще уходи оттуда, там постоянно косяки в работе.
            Константин Ильин
            11 июля 2016, 13:03
            У заказчика такой, я сам таймвебом пользуюсь
            Вроде шара, точно не могу сказать
        Сергей
        28 ноября 2016, 17:53
        Попробуйте убрать кирилицу из вызова. Т.е.
        &emailSubject=`obratniy zvonok`
        &validationErrorMessage=`Error`
                	&successMessage=`Send`
        Я однажды столкнулся с такой же проблемой — но так и не смог найти решения.
          Константин Ильин
          28 ноября 2016, 18:07
          Если встречу еще раз такую проблему — попробую)
          В итоге на всех хостах норм работало, а на рег.ру нет.
            Сергей
            29 ноября 2016, 00:25
            Я вот с другой проблемой столкнулся — но ответа нигде нет.
            Сыпятся (реально сыпятся — 200 шт за два дня) пустые письма с плейсхолдерами ([[+name]] и т.д.) вместо информации. Все поля обязательные к заполнению, потому даже не могу понять как это происходит
              Андрей
              29 ноября 2016, 10:11
              Хук spam используется? Также можно включить checkIp и добавить рекапчу.
          Дмитрий
          01 августа 2017, 12:08
          Столкнулся с подобной проблемой.
          Почта emailTo была на яндексе. Упомянул об этом при запросе в техподдержку хостинга.
          Техподдержка хостинга ответила:
          «С нашей стороны нет никаких ограничений на отправку писем из скриптов сайта, по данному вопросу обратитесь в яндекс».
          Подумал, что ответили, лишь бы ответить. Но заменил в emailTo почту на gmail — и уведомление пришло.
          Хостинг — masterhost.
          Может, кому пригодится.
            Евгения
            09 февраля 2018, 11:55
            Помогло при аналогичной проблеме в настройках php поставить
            mbstring.func_overload = 0
              Илья
              16 апреля 2018, 15:52
              Поддерживаю, такое часто бывает когда на хостинге и bitrix и modx находятся. Первый требует mbstring.func_overload = 2
              SEQUEL.ONE
              14 сентября 2019, 20:36
              Сегодня удалось победить отправку почты из формы на reg.ru

              Во-первых я настроил smtp сервер от Яндекса по мануалу modhost.pro/help/email
              Во-вторых надо было настроить DNS. Тех. поддержка reg.ru в этом помогла:

              В SPF-записи отсутствует ip-адрес хостинга:

              site.com. 300 IN TXT «v=spf1 redirect=_spf.yandex.net»

              Это ошибка связана с политикой DMARC. Вам необходимо добавить ip-адрес сервера хостинга 192.168.255.255 в SPF-запись. Она примет следующий вид:

              v=spf1 ip4:192.168.255.255 redirect=_spf.yandex.net
              Ну а в третьих проверить параметр emailTo, является ли введённый адрес реальным.
              И да, очень помог компонент QuickEmail со сниппетом:

              [[!QuickEmail?
                  &to=`my-mail@mydomain.ru`
                  &debug=`1`
              ]]
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                32