Форма обратной связи на сайте не получает сообщения

Очень новый HTML и разработчик веб-сайтов и не знаю, почему мой текущий контактный ящик не работает. Я размещаю свой собственный веб-сайт, и когда я пытаюсь отправить, я получаю ответ об отправке сообщения, но электронные письма никогда не получаются.

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

См. соответствующий код ниже

main.js

// Contact form
var form = $('#main-contact-form');
form.submit(function (event) {
    event.preventDefault();
    var form_status = $('<div class="form_status"></div>');
    $.ajax({
        url: $(this).attr('action'),
        beforeSend: function () {
            form.prepend(form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn());
        }
    }).done(function (data) {
        form_status.html('<p class="text-success">Thank you for contact us. As early as possible  we will contact you</p>').delay(3000).fadeOut();
    });
});

sendemail.php

<?php
$name       = @trim(stripslashes($_POST['name'])); 
$from       = @trim(stripslashes($_POST['email'])); 
$subject    = @trim(stripslashes($_POST['name']));  
$message    = @trim(stripslashes($_POST['message'])); 
$to         = '\\myemailaddress//';

$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();

mail($to, $subject, $message, $headers);

die;

index.html

<div class="col-md-8 col-sm-12">
     <div class="contact-form bottom">
           <h2>Send a message</h2>
                <form id="main-contact-form" name="contact-form" method="post" action="sendemail.php">
                     <div class="form-group">
                         <input type="text" name="name" class="form-control" required="required" placeholder="Name">
                        </div>
                        <div class="form-group">
                            <input type="email" name="email" class="form-control" required="required" placeholder="Email Id">
                        </div>
                        <div class="form-group">
                            <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea>
                        </div>
                        <div class="form-group">
                            <input type="submit" name="submit" class="btn btn-submit" value="Submit">
                       </div>
               </form>
       </div>
</div>

Заранее спасибо!


person A. Yeats    schedule 17.01.2016    source источник
comment
Я удалил свой ответ. Я думаю, это не послужило вам вообще.   -  person Funk Forty Niner    schedule 17.01.2016


Ответы (2)


Следующая проблема заключается в том, что вы не отправляете данные с помощью ajax. Использование $(formSelector).serialize() упрощает сбор данных

$.ajax({
    url: $(this).attr('action'),
    //serialize form data and include it with request
    data: form.serialize(),
    beforeSend: function () {
        ...
    }
}).done(function (data) {
    ....
});

В настоящее время, если вы сделали print_r($_POST); в своем php, вы увидите, что он пуст

person charlietfl    schedule 17.01.2016
comment
Я так понимаю, это будет совместное предприятие, лол ;-) TBH, Ajax/jQuery не моя сильная сторона, поэтому я не смог бы обнаружить с ним проблемы. - person Funk Forty Niner; 17.01.2016
comment
@ Fred-ii- действительно было легко заметить ... не так много строк опций в $.ajax означает, что чего-то не хватает ... лол. - person charlietfl; 17.01.2016
comment
хе-хе, для вас может быть. Я все еще читаю книгу по jQuery. Я слишком долго был вне связи с этим. Когда я нашел PHP, я отказался от JS, потому что это просто ошеломило меня; это все еще так. - person Funk Forty Niner; 17.01.2016
comment
Я позволю ОП собрать все воедино, я думаю, у них достаточно, чтобы продолжить. Ура! - person Funk Forty Niner; 17.01.2016
comment
хотите увидеть точную копию, которая только что была опубликована? stackoverflow.com/q/34834475, и я удалил свой ответ. Я думаю, это не послужило им. - person Funk Forty Niner; 17.01.2016
comment
Это привело меня на правильный путь, но я не буду получать текст сообщения, просто пустое электронное письмо. Удалось получить это сейчас. Огромное спасибо - person A. Yeats; 17.01.2016

После работы от ответа @charlietfl. Изменение типа и URL-адреса, казалось, исправило это. Рабочий код внизу:

основной.js:

var form = $('#main-contact-form').serialize();
form.submit(function (event) {
    event.preventDefault();
    var form_status = $('<div class="form_status"></div>');
    $.ajax({
        url: $(this).attr('action'),
        type: 'POST',
        dataType: "json",
        beforeSend: function () {
            form.prepend(form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn());
        }
    }).done(function (data) {
        form_status.html('<p class="text-success">' + data.message + '</p>').delay(3000).fadeOut();

    });
});

и мой .php

<?php 
    header('Content-type: '); 
    $status = array( 
        'type'=>'success', 
        'message'=>'Thank you for contact us. As early as possible  we will contact you ' 
    ); 

$name = @trim(stripslashes($_POST['name']));  
$email = @trim(stripslashes($_POST['email']));  
$subject = @trim(stripslashes($_POST['subject']));  
$message = @trim(stripslashes($_POST['message']));  

$email_from = $email; 
$email_to = '\\myemail//'; 

$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message; 

$success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); 

echo json_encode($status); 
die; 
person A. Yeats    schedule 17.01.2016