Почему не отправляется письмо?

190
10 декабря 2021, 21:30

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

<form name="MyForm" action="" id="callbacks" class="feedback_form" method="post">
  <input type="text" name="name" data-placeholder="true" placeholder="Как к вам обращаться?" required>
  <input type="text" name="email" data-placeholder="true" placeholder="Ваш E-mail" required>
  <input type="submit" value="Проконсультируйте меня" id="feedback_submit">
</form>
$(function() {
  $('[name="MyForm"]').submit(function(event) {
    event.preventDefault();
    var form = this;
    var title = $(form).next();
    $.ajax({
      type: "POST",
      url: "http://мойсайт.рф/feedback/sendmail.php",
      data: $(form).serialize(),
      error: function() {
        title.html("Произошла ошибка!");
      },
      beforeSend: function() {
        title.html("Отправляем данные...");
      },
      success: function(result) {
        title.html(result);
        checkThis();
      }
    });
  })
});

Файл sendmail.php:

<?php
  if (isset($_POST["email"])) {
    if (isset($_POST["name"])) {
      $name = $_POST["name"];
    }
    if (isset($_POST["email"])) {
      $email = $_POST["email"];
    }
    if ($name == "" or $email == "") {
      echo "Заполните, пожалуйста, все поля!";
    } else {
      $ip = $_SERVER["REMOTE_ADDR"];
      $to = "мояпочта@mail.ru";
      $subject = "Заявка с сайта!";
      $headers = "Content-type:text/plain; charset=utf-8; \r\nReply-To: <$email> \n";
      $headers .= "From: Моя компания <мояпочта@mail.ru>";
      $message = "Имя: $name\r\nE-mail: $email\r\nIP отправителя: $ip"; 
      $send = mail($to, $subject, $message, $headers);
      if ($send == true) {
        echo "Ваше письмо отправлено!<br>В ближайшее время мы Вам перезвоним.<br>Спасибо что выбрали нас!";
      } else {
        echo "Не удалось отправить, попробуйте снова!";
      }
    }
  }
  ini_set('short_open_tag', 'On'); 
?>
Answer 1

Перепишите ваш обработчик error в такой вид

error: function (jqXHR, textStatus, errorThrown) {
    alert("Произошла ошибка! " + textStatus + ": " + errorThrown);
}

и посмотрите какая именно ошибка происходит.

И вам урок на будущее - не нужно глотать оригинальные ошибки.

Вот здесь

echo "Не удалось отправить, попробуйте снова!";

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

READ ALSO
Суммировать value при нажатии на кнопку

Суммировать value при нажатии на кнопку

Подскажите пожалуйста, кто разбирается

278
Javascript. Обнуление переменных в цикле

Javascript. Обнуление переменных в цикле

Есть код, который проходится по заказам и получает суммы за определенный периодСейчас 3 периода

77
Пустое значение в заявке

Пустое значение в заявке

Кто может подсказать в чем причина? Когда нажимаю кнопку отправить, полученное значение становится NaN

82
Правильно ли в приложении используются глобальные переменные?

Правильно ли в приложении используются глобальные переменные?

Имеется приложение, в котором активно используются глобальные переменныеЕсть опасения, что это будет сильно нагружать систему

92