Отправка формы на сервере произошла ошибка

Привет, друзья. Сегодня хотел бы сделать небольшую статью/памятку для тех кто испытывает проблемы с отправкой формы обратной связи. Дело в том, что я часто получаю письма и сообщения в социальных сетях, связанные с тем, что у вас по какой-то причине не доходят письма отправленные из форм обратной связи, поэтому я решил составить некий FAQ, в котором опишу ТОП самых популярных причин, по которым данные могут не приходить на почту.

Сразу оговорюсь, что в большинстве случаев, список поможет тем, кто берет формы с моего блога, так как я могу ручаться, что они точно работают, ведь я сам их проверил и периодически использую в качестве заготовок для того или иного проекта.

1. Забывают поменять адреса в демке

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

Хорошо, если человек не забыл указать хотя бы отправителя. В таком случае есть возможность написать ему лично и указать на ошибку, но в большинстве случаев обе почты указаны неверно. В последнее время я не поленился и поменял в некоторых демках адреса на выдуманные, но все равно проблема все еще актуальна. А люди же тестируют не по разу, а 5 — 10, а то и того больше. Вот буквально сегодня — 11 писем с 11 до 12 дня пришло…

Не отправляются данные из формы обратной связи

Вывод: пожалуйста, будьте внимательны и прежде чем писать, что что-то не работает, убедитесь, что правильно задали параметр всех возможных настроек.

2. Используется слишком старая версия PHP

Друзья, все формы, которые я делаю, тестируются на последних версиях PHP, то есть выше 7.0. Раньше это была 5.6 и, некоторые исходники могут работать на этой версии, но я рекомендую именно 7 и выше. На старой версии что-то может не поддерживаться и из-за этого, иногда, возникают проблемы.

Вывод: убедиться, что работаете с современным стандартом PHP и, в случае если у вас старая версия, то переключиться на 7. Сделать это можно у вашего хостера. Обычно, достаточно просто выбрать более актуальную и все. Никаких проблем с переходом возникнуть не должно. У меня, на Beget это выглядит так:

Используйте современный стандарт php

3. Попытка отправить данные просто открыв файл с формой в браузере

Многие, по неопытности, думают, что можно скачать демку на компьютер, открыть с рабочего стола ее в браузере и данные придут на почту. Друзья, так не бывает. Мы для отправки формы используем PHP, а это серверный язык программирования. То есть для работы нужен сервер локальный, например, Openserver, или реальный (любой хостинг или выделенный сервер).

Вывод: тестировать форму на сервере (хостинге).

4. Не настроен локальный сервер

Многие из тех, кто тестирует форму на локальном хостинге думают, что при отправке данных из контактной формы обязательно должны прийти на почту. Но это не всегда так. В большинстве случаев, по умолчанию сервера настроены так, что при отправке содержимое сообщения складываются в определенной папке в виде текстового файла. В Openserver, например, при отправке письма данные улетают в папку «email» в виде txt-файлов, которая находится по пути «/userdata/tmp/email».

Но, есть возможность настроить отправку через SMTP. Подробнее о том, как это сделать написано в официальной документации.

Вывод: настроить сервер или искать сообщения в папке, в которую складывает письма ваш сервер.

5. Тестовый период хостинга или бесплатный вариант

При использовании бесплатного хостинга или при тестовом бесплатном периоде (как правило месячным или 14 дневным), которыми нас заманивают компании, нужно убедиться, что не отключена возможность отправлять письма. В 99% — она отключена и каждая уважающая себя компания, предоставляющая услуги хостинга, будет это делать, чтоб сократить распространения спама. Думаю, вы понимаете, о чем я. Поэтому, тестируйте на платном домене и хостинге, тогда все должно быть в порядке.

Вывод: тестировать форму на оплаченном домене и хостинге.

6. Хостер не позволяет отправлять письма с сайта на бесплатные почтовые ящики

Иногда хостеры, в рамках все той-же борьбы со спамом отключают (ограничивают) возможность отправки писем на бесплатные почтовые ящики. Тоже касается и отправителя. Отправить данные можно только на привязанные к домену адреса или с привязанных к домену адресов. Уточните у хостера эти моменты, если предыдущие советы не помогли.

Кроме того, загляните в справку от Reg.ru, даже если вы не пользуетесь этим сервисом. Особенно в раздел «Возможные проблемы».  Советы приведенные там могут помочь вам, натолкнув на мысль, что еще стоит проверить или уточнить у своего хостера.

Вывод: поинтересуйтесь у хостера нет ли ограничений на отправку писем на/с не привязанных к домену адресов.

7. Ошибка в путях при подключении

Одна из банальных, но очень частых проблем у тех, кто пишет с претензией, что формы на блоге нерабочие — это ошибки в путях при подключении файлов. Откройте консоль (f12), изучите ошибки, которые там выводятся и попробуйте устранить.

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

8. Блокировка входящей почты самим почтовым сервисом

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

Предлагаю ознакомиться с ее комментарием, в котором она описала ситуацию, с которой пришлось столкнуться. Огромное ей спасибо за то, что не осталась равнодушной и описала процедуру решения. Я с такой ситуацией не сталкивался, но для многих пользователей Gmail она достаточно типичная и ее комментарий может помочь многим из вас.

Проблемы с отправкой формы

9. Не работает PHP на сервере

Да, и такое бывает. Мне периодически пишут люди, что у них не работает форма и когда я начинаю разбираться в проблеме и прошу их вывести на сайте:

То оказывается, что PHP-теги вообще не обрабатываются.  Люди используют какой-нибудь самый дешевый тариф и оказывается, что на нем вообще не поддерживается PHP. Кроме того, некоторые забывают, что работать нужно в файле с расширением «.php», а не «.html».

Вывод: убедитесь в том, что PHP-теги обрабатываются должным образом.

10. Отправка писем заблокирована хостером

Случалось со мной и такое. Обратился человек помочь с настройкой формы. Я все сделал, но при тестировании оказалось, что ничего не работает. Тогда закинул к себе на сервер и решил протестировать там. Оказалось, что письма успешно доходят. Тогда проверил все то, о чем писал выше, но все оказалось в порядке. Решил писать в техподдержку. Вот ответ:

Причина блокировки писем хостером

Оказалось, что раньше под этим доменом на хостинге болтался заброшенный сайт. Вроде как его взломали и рассылали спам, поэтому хостер решил его заблокировать. Как видите, уже 2 года была заблокирована возможность отправлять письма с данного ресурса.

Вывод: не стесняйтесь обращаться в техническую поддержку. Это может сэкономить вам много времени.

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

При использовании сайта на cms WordPress совместно с плагином Contact Form 7, случается так, что у некоторых посетителей не отправляются веб-формы, созданные плагином. Текст ошибки выглядит так: «При отправке сообщения произошла ошибка. Пожалуйста, попробуйте ещё раз позже.»

Решение ошибки Contact Form 7: "При отправке сообщения произошла ошибка."
Обычно такая ошибка возникает когда указан неверный исходящий адрес, либо плагин или скрипт вмешивается в работу плагина веб-форм. Первое, что необходимо проверить для решения проблемы, это адрес исходящий почты в настройках проблемной формы:исходящая почта в wpcf7

Адрес должен соответствовать домену сайта. Например, если у вас домен website.ru, то в поле «От кого» должен стоять ящик этого домена, например mail@website.ru. При этом исходящий адрес может даже не существовать, поэтому можете указать абсолютно любую почту, главное — чтобы она соответствовала домену сайта.

Если способ не помог, то проверьте настроен ли сервис Recaptcha. Для этого зайдите в админке по пути: Contact Form 7> Интеграция.

Решение ошибки Contact Form 7: "При отправке сообщения произошла ошибка."

Если в блоке «ReCaptcha» написано «reCAPTCHA активна на этом сайте.», то нужно отключить привязку ключей. Для этого нажмите на кнопку «Настройка интеграции», а затем «Удаление ключей».

Решение ошибки Contact Form 7: "При отправке сообщения произошла ошибка."

ReCaptcha — это сервис Google, который на основе своих алгоритмов определяет человек вы или бот. Иногда сервис ошибается и не дает отправлять формы на сайте. После удаления ключей ваш сайт не буден защищен от спама, но вы можете установить плагин «ReCaptcha v2 for Contact Form 7», где не будет проблемы с определением пользователей.

Что делать если способы не помогли?

В таком случае последовательность действий такая:

  1. Нужно отключить все плагины, кроме Contact Form 7, затем проверить работу форм. Если проблема решилась, то методом исключения включаете каждый плагин по отдельности и находите конфликтный.
  2. Если не помогло, то открываем файлы шаблона header.php и footer.php и удаляем подключение сторонних скриптов. Проверяем работу форм. Также, если формы заработали, применяете метод исключения.

Вышеописанные способы в 99% случаев должны помочь решить проблему. Если у вас осталась ошибка, то прошу связаться с нами любым доступным способом, указанным ниже, либо на странице контакты

Есть следующая HTML-форма:

<form id="reg" action="http://127.0.0.1:8000/rais/login/" method="POST">
  <div class="form-row">
    <div class="col">
      <div class="form-group">
        <label for="exampleInputEmail">Email</label>
        <input type="email" class="form-control" id="exampleInputEmail" aria-describedby="emailHelp" placeholder="Enter your Email" required>
        <!-- <small id="emailHelp" class="form-text text-muted">Enter your email</small> -->
      </div>
    </div>
    <div class="col">
      <div class="form-group">
        <label for="exampleInputPass">Password</label>
        <input type="password" class="form-control" id="exampleInputPass" placeholder="Enter your Password" required>
        <!-- <small id="passHelp" class="form-text text-muted">Enter your password</small> -->
      </div>
    </div>
  </div>
  <div class="form-check">
    <label class="form-check-label">
       <input type="checkbox" class="form-check-input">
          Remember me
    </label>
  </div>
  <div class="text-center form">
    <button type="submit" class="btn btn-info">Log in</button>
  </div>
</form>

Запросы принимает сервер на Django. При нажатии на кнопку приходит POST-запрос, как и ожидалось, однако его request.POST пуст. Также при нажатии F12 и переходе в Network при просмотре отправленных заголовков отсутствует заголовок Form Data, хотя при отправке самой просто формы по первой ссылке из Google данный заголовок присутствует и содержит отправляемые данные.

Вопрос: что не так с данной формой, как сделать, чтобы она отправляла данные вместе с POST-запросом?

maks_7

4 / 4 / 3

Регистрация: 14.10.2014

Сообщений: 321

1

Не работает отправка формы

09.05.2016, 14:09. Показов 3787. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

С праздником, уважаемые форумчане!
У меня есть файл отправки формы на php. Я его раньше уже использовал и он прекрасно работал. Но сейчас что-то пошло не так.

Вот форма:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<table style="margin:0 auto">
           <tr><td>
                 <form method="post" name="letter" action="handler.php">        
                    <div class="input-group "  style="margin-right:30px;">
                       <span class="input-group-addon text-form">Your name<span style="color:red"> *</span></span>       
                       <input name="name" type="text" class="form-control yourname" >             
                 </div>
               </td>
               <td> 
                  <div class="input-group ">
                       <span class="input-group-addon text-form">Your Email<span style="color:red"> *</span></span>      
                       <input name="email" type="email" class="form-control yourmail">            
                    </div>
                 </form>
              </td> 
           </tr>
           <tr>
              <td colspan="2">
                  <div style="margin-top:20px; width:100%;" class="input-group">
                       <span class="input-group-addon  textarea">Your Message<span style="color:red"> *</span></span>                     
                       <textarea name="text" rows="10" class="form-control message"></textarea>                                                    
                  </div>
              </td>
           </tr>
           <tr>
              <td colspan="2">
                <input type="submit" value="SEND MESSAGE" class="send"> 
              </td>
           </tr>
        </table>

И вот файл отправки формы:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if( isset($_POST['name'],$_POST['email'],$_POST['text']) ) {
 $name = trim($_POST['name']);
 $email = trim($_POST['email']);
 $text = trim($_POST['text']);
  if(empty($name) || empty($email) || empty($text)) { //если что то не ввели
   echo 'Вы заполнили не все поля!';
  }
  else { //все поля заполнены, отправляем
   $mailto = 'k33@ya.ru';
   $subject = 'Тема письма';
//формируем текст сообщения
   $message  = 'Сообщение от пользователя <b>'.$name.'</b>';
   $message .= 'E-mail пользователя: <a href="mailto:' . $email . '">' . $email . '</a><br />';
   $message .= 'Текст сообщения:<br />' . $text;
//формируем заголовки (кодировку только, остальное сами добавите по желанию)
   $headers = 'Content-type: text/html; charset=utf-8';
//отправляем письмо
   $mail = mail($mailto, $subject, $message, $headers);
//проверяем отправку
    if(TRUE === $mail) echo 'Ваше сообщение успешно отправлено!';
    else echo 'Произошла ошибка при отправке сообщения.';
//проверку можно записать короче при помощи тернарного оператора, вот так:
//  echo (TRUE === $mail) ? 'Ваше сообщение успешно отправлено!' : 'Произошла ошибка при отправке сообщения.' ;
//тогда нужно будет раскомментировать строчку выше и закомментировать строчки выше с проверкой
  }
}
?>

Может это таблица мешает или то,что сайт на бутстрапе? Спасибо зарание.



0



Пифагор

2169 / 1652 / 840

Регистрация: 10.01.2015

Сообщений: 5,184

09.05.2016, 14:15

2

HTML5
1
<input type="submit" value="SEND MESSAGE" class="send">

помимо всего должно быть имя, которое потом передается при условии нажатия.

HTML5
1
<input type="submit" name="submit" value="SEND MESSAGE" class="send">

Добавлено через 1 минуту

PHP
1
2
3
if(isset($_POST['submit'])){
    //то, что выполняется
}



1



Kerry_Jr

Эксперт PHP

3105 / 2590 / 1219

Регистрация: 14.05.2014

Сообщений: 7,236

Записей в блоге: 1

09.05.2016, 14:47

3

Цитата
Сообщение от Пифагор
Посмотреть сообщение

помимо всего должно быть имя, которое потом передается при условии нажатия.

PHP
1
2
3
if(isset($_POST['submit'])){
    //то, что выполняется
}

Не понимаю, для чего проверять, нажата кнопка или нет.



0



2169 / 1652 / 840

Регистрация: 10.01.2015

Сообщений: 5,184

09.05.2016, 14:51

4

Цитата
Сообщение от Kerry_Jr
Посмотреть сообщение

Не понимаю, для чего проверять, нажата кнопка или нет.

А если кнопок несколько?



0



4 / 4 / 3

Регистрация: 14.10.2014

Сообщений: 321

09.05.2016, 14:57

 [ТС]

5

Спасибо, помогло! Теперь возникла следующая проблема. Когда должна открываться страница, где сообщается, что письмо успешно отправлено, вместо этого какие-то кракозябры и на почту тоже кракозябры приходят. Страница index.html сохранена в utf-8 и в php файле есть строчка
$headers = ‘Content-type: text/html; charset=utf-8’;
Как сделать нормальный текст?



0



maruo

133 / 133 / 48

Регистрация: 26.04.2013

Сообщений: 1,356

09.05.2016, 15:03

6

Пифагор, Так можно проверить на параметры которые есть , и должны приниматься

Добавлено через 1 минуту
maks_7,
Открываете через notepad++ файл преобразовываете в utf-8 без BOM
Прописываете в .htaccess строчку

HTML5
1
AddDefaultCharset utf-8

Если информация выбирается из Базы данных, то в соединении указываете кодировку.

PHP
1
mysqli_set_charset($link, "utf8");



1



Эксперт PHP

3105 / 2590 / 1219

Регистрация: 14.05.2014

Сообщений: 7,236

Записей в блоге: 1

09.05.2016, 15:03

7

Цитата
Сообщение от Пифагор
Посмотреть сообщение

А если кнопок несколько?

Тогда этот вопрос не возник бы



0



maruo

133 / 133 / 48

Регистрация: 26.04.2013

Сообщений: 1,356

09.05.2016, 15:11

8

maks_7, Насчет кодировки на почте, нужно отправить заголовок

PHP
1
$mailheaders = "Content-type: text/plain; charset="utf-8"rn";



1



4 / 4 / 3

Регистрация: 14.10.2014

Сообщений: 321

09.05.2016, 15:17

 [ТС]

9

Спасибо, все отлично работает!



0



Ошибки в формах

приема данных

Ошибки в формах могут появляться из-за неверно настроенной интеграции со сторонним сервисом. В этой статье описаны наиболее частые ошибки и пути их решения.

После подключения сервиса приема данных в настройках сайта отметьте его галочкой в меню «Контент» блока с формой и обязательно переопубликуйте страницу с формой.

Заявки не приходят в сервис приема данных

Если на опубликованной странице в форме не отображается ошибка, а заявки все равно не приходят, то нужно проверить логи сервиса приема данных.

Перейдите в личный кабинет Тильды → откройте раздел «Заявки» → посмотрите наличие ошибок в «Журнале ошибок».

Перейдите в раздел «Заявки»

Также открыть список последних ошибок можно при помощи бокового виджета. Для этого нажмите на иконку восклицательного знака.

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

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

Ошибки при заполнении формы на сайте

Такие ошибки отображаются при попытке отправки данных в форме и видны всем пользователям.

Ошибка «Отправка данных невозможна»

Необходимо перейти в «Настройки сайта» → «Формы» → в самом низу «Общие настройки форм» → нажать «Настроить» → «Сохранить» → переопубликовать страницу с формой, перейти на опубликованную страницу, обновить её 2-3 раза и попробовать оставить заявку ещё раз.

Ошибка «[456] {«needcaptcha»:1}. Please, try again later.»

Ошибка появляется для определенного пользователя, при попытке заполнить форму несколько раз подряд за короткий период времени, без прохождения теста «Я не робот». Обычно в таком случае пользователь блокируется по IP на сутки. Необходимо проверить отправку формы в режиме «Инкогнито» или через VPN.

Если в вашем проекте возникла иная ошибка при получении данных с форм, обратитесь в службу поддержки в личном кабинете. Специалисты помогут разобраться.

Понравилась статья? Поделить с друзьями:
  • Отправка сообщила об ошибке 0x800ccc78 невозможно отправить сообщение
  • Отправка фно на сервер ошибка обработки
  • Отправка сообщила об ошибке 0x800ccc67
  • Отправка тестового электронного сообщения произошла неизвестная ошибка
  • Отправка сообщила об ошибке 0x80042109