2015-03-30 7 views
0

У меня есть контактная форма на моем сайте. Однако всякий раз, когда я нажимаю кнопку «Отправить», я не получаю ничего на наш адрес электронной почты, хотя он и сказал, что он был отправлен.не получает письма от контактной формы php

Я знаю хорошее количество HTML, но не так много о PHP, поэтому любая помощь приветствуется.

Ниже приведен код:

<form id="contact-form" role="form" action="" method="POST"> 
    <div class="ajax-hidden"> 
     <div class="form-group wow fadeInUp"> 
      <label class="sr-only" for="c_name">Name</label> 
      <input type="text" id="c_name" class="form-control" name="c_name" placeholder="Name"> 
     </div> 
     <div class="form-group wow fadeInUp" data-wow-delay=".1s"> 
      <label class="sr-only" for="c_email">Email</label> 
      <input type="email" id="c_email" class="form-control" name="c_email" placeholder="E-mail"> 
     </div> 
     <div class="form-group wow fadeInUp" data-wow-delay=".2s"> 
      <textarea class="form-control" id="c_message" name="c_message" rows="7" placeholder="Message"></textarea> 
     </div> 
     <button type="submit" class="btn btn-lg btn-block wow fadeInUp" data-wow-delay=".3s">Send Message</button> 
    </div> 
    <div class="ajax-response"></div> 
</form> 
<script> 
$('button').click(function() { 
    var c_name = $("#c_name").val(); 
    var c_email = $("#c_email").val(); 
    var c_message = $("#c_message").val(); 
    $.ajax({ //create an ajax request to load_page.php 
     type: "POST", 
     url: "assets/php/contactForm.php", 
     data: { 
      "c_name": c_name, 
      "c_email": c_email, 
      "c_message": c_message 
     }, 
     success: function (data) { 
      if (data) { 

       alert(data); 
      } else { 
       alert('Successfully not posted.'); 
      } 
     } 
    }); 
}); 
</script> 

Contactform.php

<?php 

// Contact 
$to = '[email protected]'; 
$subject = 'Portfolio ContactForm'; 

if(isset($_POST['c_name']) && isset($_POST['c_email']) && isset($_POST['c_message'])) { 
    $name = $_POST['c_name']; 
    $from = $_POST['c_email']; 
    $message = $_POST['c_message']; 

    if (mail($to, $subject, $from, $name, $message)) { 
     $result = array(
      'message' => 'Sent, thanks!', 
      'sendstatus' => 1 
     ); 
     echo json_encode($result); 
    } else { 
     $result = array(
      'message' => 'Ooops, problem..', 
      'sendstatus' => 1 
     ); 
     echo json_encode($result); 
    } 
} 
?> 
+0

Я бы взял ваш адрес электронной почты ..... –

+0

Возможно, вы запустили его где-нибудь, где нет почтового сервера? – Turion

+0

Может быть отсутствие почтового сервера или что ваш сервер не разрешает адрес FROM из любого домена. – max

ответ

0

Попробуйте установить и запустить PHPMailer, это гораздо более тщательная система электронной рассылки (бесплатно), а также дает более информативные ответы об ошибках, если не удается отправить электронное письмо.

Mail функция известен ламе. Вам нужно получить заголовки ТОЧНО исправьте его, и даже тогда он все равно не сможет доставить такие почтовые клиенты, как gmail и hotmail, а большинство других используют проверку SFP и FROM, поэтому ваш адрес должен быть одним и тем же доменом сервера, с которого вы отправляете почту.

Для проверки работы системы: Отключите все фильтры фильтрации и фильтрации спама на получающем и получающем сервере. Проверьте, что домен домена совпадает с доменом отправки, проверяет папки спама, проверяет вашу папку с адресами всех адресов электронной почты для сообщений об ошибках/нежелательных сообщениях (обычно что-то вроде [email protected]).

Но самое главное, используйте лучшую интегрированную почтовую программу, такую ​​как PHPMailer или SwiftMail.

0

Проверьте журналы почты вашего сервера, чтобы увидеть, если почта на самом деле уходит с вашего сервера. (И чтобы заметить очевидное, проверьте спам-бокс, прежде чем делать что-нибудь еще.) Если mail() возвращает TRUE, это просто указывает, что сообщение было принято для доставки. Не то, чтобы это было фактически доставлено.

Смежные вопросы