2015-12-09 2 views
0

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

Javascript выглядит следующим образом:

$(function() { 

    $("#contactForm input,#contactForm textarea").jqBootstrapValidation({ 
     preventSubmit: true, 
     submitError: function($form, event, errors) { 
      // additional error messages or events 
     }, 
     submitSuccess: function($form, event) { 
      event.preventDefault(); // prevent default submit behaviour 
      // get values from FORM 
      var name = $("input#name").val(); 
      var email = $("input#email").val(); 
      var phone = $("input#phone").val(); 
      var desc = $("textarea#desc").val(); 
      var peoplefeed = $("input#peoplefeed").val(); 
      var datepickup = $("input#datepickup").val(); 
      var firstName = name; // For Success/Failure Message 
      // Check for white space in name for Success/Fail message 
      if (firstName.indexOf(' ') >= 0) { 
       firstName = name.split(' ').slice(0, -1).join(' '); 
      } 
      $.ajax({ 
       console.log("php go!") 
       url: "././mail/contact_me.php", 
       type: "POST", 
       data: { 
        name: name, 
        phone: phone, 
        email: email, 
        desc: desc, 
        peoplefeed: peoplefeed, 
        datepickup: datepickup 
       }, 
       cache: false, 
       success: function() { 
        // Success message 
        $('#success').html("<div class='alert alert-success'>"); 
        $('#success > .alert-success').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;") 
         .append("</button>"); 
        $('#success > .alert-success') 
         .append("<strong>Your message has been sent. </strong>"); 
        $('#success > .alert-success') 
         .append('</div>'); 

        //clear all fields 
        $('#contactForm').trigger("reset"); 
       }, 
       error: function() { 
        // Fail message 
        $('#success').html("<div class='alert alert-danger'>"); 
        $('#success > .alert-danger').html("<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;") 
         .append("</button>"); 
        $('#success > .alert-danger').append("<strong>Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!"); 
        $('#success > .alert-danger').append('</div>'); 
        //clear all fields 
        $('#contactForm').trigger("reset"); 
       }, 
      }) 
     }, 
     filter: function() { 
      return $(this).is(":visible"); 
     }, 
    }); 

    $("a[data-toggle=\"tab\"]").click(function(e) { 
     e.preventDefault(); 
     $(this).tab("show"); 
    }); 
}); 


/*When clicking on Full hide fail/success boxes */ 
$('#name').focus(function() { 
    $('#success').html(''); 
}); 

Это прекрасно работает и работает console.log

Это мой PHP:

<?php 
// check if fields passed are empty 
if(empty($_POST['name'])  || 
    empty($_POST['email'])  || 
    empty($_POST['phone'])  || 
    empty($_POST['desc'])  || 
    empty($_POST['peoplefeed']) || 
    empty($_POST['datepickup']) || 
    !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) 
    { 
    echo "No arguments Provided!"; 

    return false; 
    } 

    $name = $_POST['name']; 
    $email_address = $_POST['email']; 
    $phone = $_POST['phone']; 
    $desc = $_POST['desc']; 
    $peoplefeed = $_POST['peoplefeed']; 
    $datepickup = $_POST['datepickup']; 

    // create email body and send it  
    $to = "[email protected]"; // *REPLACE WITH THE EMAIL ADDRESS YOU WANT THE FORM TO SEND MAIL TO* 
    $email_subject = "Cake Order for: $name"; 
    $email_body = "You have received a new Cake Order\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$desc\n\nPhone: \n$desc\n\nPeople to Feed:\n$peoplefeed\n\nPickup Date:\n$datepickup"; 
    $headers = "From: [email protected]\n"; // *REPLACE WITH THE EMAIL ADDRESS YOU WANT THE MESSAGE TO BE FROM* 
    $headers = "Reply-To: $email_address"; 
    mail($to,$email_subject,$email_body,$headers); 
    return true;    
    ?> 

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

+0

Что возвращает запрос 'mail()'? Вы подтвердили, что код действительно делает это так далеко? –

+0

использование 'return' вне функции ничего не делает. –

+0

Заголовки должны быть разделены с помощью \ r \ n. – Progrock

ответ

0

Сделайте так:

if(empty($_POST['name'])||empty($_POST['email'])|| empty($_POST['phone']) || empty($_POST['desc'])  || 
    empty($_POST['peoplefeed']) || empty($_POST['datepickup']) || !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) 
{ 
    echo "No arguments Provided!"; 
    # return false; 
} 
else{ 

    $name = $_POST['name']; 
    $email_address = $_POST['email']; 
    $phone = $_POST['phone']; 
    $desc = $_POST['desc']; 
    $peoplefeed = $_POST['peoplefeed']; 
    $datepickup = $_POST['datepickup']; 

    $to = "[email protected]"; 
    $email_subject = "Cake Order for: $name"; 
    $email_body = "You have received a new Cake Order\n\n"."Here are the details:\n\nName: $name\n\nEmail: $email_address\n\nPhone: $phone\n\nMessage:\n$desc\n\nPhone: \n$desc\n\nPeople to Feed:\n$peoplefeed\n\nPickup Date:\n$datepickup"; 
    $headers = "From: [email protected]\r\n"; 
    $headers .= "Reply-To: $email_address"; # changed 

    if(mail($to,$email_subject,$email_body,$headers)) # changed 
    { 
     echo "Success"; 
    } 
    else{ 
     echo "Failed"; 
    } 

} 
+0

Я пробовал это, но я не думаю, что любой из php запускается – AntiGreyMatter

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