@bahovd

Форма обратной связи Ajax проблема с отправкой, что делать?

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

HTML:
<h2 style="    text-align: center;">Обратный звонок</h2>
<div class="placed">
<form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()">
<input type="text" name="name" placeholder="Ваше имя" required>
<input type="text" name="phone" placeholder="Ваш телефон" required>
<input type="text" name="email" placeholder="Ваш Email" required>
<input type="submit" value="Отправить" class=" btn btn-primary">
</form>


Script:
<script>
function call() {
 	  var msg   = jQuery('#formx').serialize();
        jQuery.ajax({
          type: 'POST',
          url: 'mail.php',
          data: msg,
          success: function(data) {
$('.placed').html('Мы скоро свяжемся с Вами')
          },
          error:  function(xhr, str){
	    alert('Возникла ошибка: ' + xhr.responseCode);
          }
        });
 

    }

</script>

И собственно форма отправки PHP.
<?php
    $msg_box = "";
    $errors = array();

    if($_POST['name'] == "")  $errors[] = "Поле 'Ваше имя' не заполнено!";
    if($_POST['phone'] == "") $errors[] = "Поле 'Ваш e-mail' не заполнено!";
    if($_POST['email'] == "") $errors[] = "Поле 'Текст сообщения' не заполнено!";
 
    if(empty($errors)){     

        $message  = "Имя пользователя: " . $_POST['name'] . "<br/>";
        $message .= "Номер пользователя: " . $_POST['phone'] . "<br/>";
        $message .= "Эмейл письма: " . $_POST['email'];      
        send_mail($message);

        $msg_box = "<span style='color: green;'>Сообщение успешно отправлено!</span>";
    }else{

        $msg_box = "";
        foreach($errors as $one_error){
            $msg_box .= "<span style='color: red;'>$one_error</span><br/>";
        }
    }
    echo json_encode(array(
        'result' => $msg_box
    ));

    function send_mail($message){
        $mail_to = "unkez@mail.ru	"; 
        $subject = "Письмо с обратной связи";
        
        $headers= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=utf-8\r\n";
        $headers .= "From: Тестовое письмо <no-reply@test.com>\r\n";
		
        mail($mail_to, $subject, $message, $headers);
    }
  • Вопрос задан
  • 310 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Отправьте письмо на собственный почтовый сервер и посмотрите в его логах, что происходит.
Попробуйте запустить tcpdump или wireshark по 25 порту в момент отправки сообщения, посмотрите там.
Также вполне вероятно, что ваше письмо просто уходит в спам, поскольку оформлено не по стандарту. RFC допускает в заголовках (From, To, Subject и т.д.) только символы с кодами меньше 128, соответственно русские буквы в этих заголовках недопустимы и требуют кодирования в BASE64 или Quoted-Printable. По стандарту не рекомендуются письма, содержащие только html-часть, без соответствующей text-части.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы