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
8 927
0

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

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

      Как минимум интересно почему после переноса перестал воспринимать INLINE?
        Константин Ильин
        10 июля 2016, 11:49
        0
        попробовал вызов на отдельной странице, письмо пришло.
        [[!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
      0
      Чтож, по принципу если не работает твое смотри документацию, вставь то, что есть в документации.
      [[!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
        0
        Настройка
        emailsender укажите тот емайл который указан в emailFrom
        Михаил
        11 июля 2016, 11:23
        0
        Может проблема в настройке email_sender? Он должен совпадать с именем отправителя формы.
          Константин Ильин
          11 июля 2016, 11:43
          0
          Сейчас попробовал снести сайт, установил голый 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
            0
            emailsender такой же как и &emailFrom?
              Константин Ильин
              11 июля 2016, 12:17
              0
              э как бы 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
                0
                Вот сделай их одинаковыми
                  Константин Ильин
                  11 июля 2016, 12:29
                  0
                  emailFrom = emailsender
                  Даже в вызове поставил emailFrom такой же.

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

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

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