2016-07-18 17 views
0

良い日です。注意するために、私はこの問題について研究してきましたが、なぜこれが機能していないのか分かりません。私がやっていることは、私が電子メールにメールを送ってもらえるレビューフォームを作ろうとしていることです。だからここに私のコードです:まずPHPメールはAJAXでメールを送信しません

HTML

<input type="text" id="his-name" name="his-name" placeholder="His name*"> 
<input type="text" id="her-name" name="her-name" placeholder="Her name*"> 
<input type="text" id="location" name="location" placeholder="Location of honeymoon*"> 
<textarea id="fav-moment" name="fav-moment" placeholder="Favorite moment during the trip"></textarea> 
<textarea id="review" name="review" placeholder="Please write a short review of your experience*"></textarea> 
<p>Upload few pictures from your honeymoon <span style="display: block; font-size:.7em">Please upload only a maximum of 4 photos</span></p><br/> 

<form action="<?php echo get_template_directory_uri(); ?>/upload.php?sessionid=<?php echo $_SESSION['sessionid'] ?>" 
      class="dropzone" id="my-awesome-dropzone"></form> 

JS

$(document).ready(function() { 
showMenu(); 

$('#submit-feedback').click(function (e) { 
    e.preventDefault(); 
    ajax_send_feedback(); 
}); 

function ajax_send_feedback() { 
$('#contact-msg-f').html('<i style="font-size:2em;" class="fa fa-spinner fa-spin"></i>'); 
var errors = new Array(); 
errors = validate_feedback_form(); 
if (errors.length != 0) { 
    display_feedback_errors(errors); 
    feedbackDelivered(0); 
    return; 
} 
else { 
    // Send data for server validation 
    $.get("http://atravelduet.com/process-review-form.php", { 
     hisname: $('#his-name').val(), 
     hername: $('#her-name').val(), 
     location: $('#location').val(), 
     favmoment: $('#fav-moment').val(), 
     review: $('#review').val(), 
     url: $('#url').val() 
    }).done(function (response) { 
      if (!response) { 
       feedbackDelivered(1); 
       clearFields(); **//THIS IS NOT WORKING TOO :(** 
      } 
      else { 
       var errros = new Array(); 
       errors = $.parseJSON(response); 
       if (errors.length != 0) { 
        display_feedback_errors(errors); 
        feedbackDelivered(0); 
       } 
      } 
     }); 
    } 
} 

function feedbackDelivered(res) { 
if (res == 1) { 
    $('#contact-msg-f').html('<span style="color:#00ff00;">Message Sent!</span>'); 
} 
else { 
    $('#contact-msg-f').html('<span style="color:#ff0000;">Please correct the fields marked red!</span>'); 
} 
} 

PHP

<?php 
$email0 = '[email protected]'; 
$email1 = '[email protected]'; 

$his_name = $_POST['hisname']; 
$her_name = $_POST['hername']; 
$location = $_POST['location']; 
$fav_moment = $_POST['favmoment']; 
$review = $_POST['review']; 

$body = <<< EOD 
<br><hr><br> 
His Name: $his_name<br> 
Her Name: $her_name<br> 
Location: $location<br> 
Favorite Moment: $fav_moment<br> 
Review: $review<br> 
EOD; 

$headers = "From: [email protected]\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$emailSubject = "$his_name and $her_name Honeymoon Review"; 
$emailTo = $email1; 

if(mail($emailTo, $emailSubject, $body, $headers)) 
    echo "Successful"; 
else 
    echo "Unsuccessful"; 
?> 
+0

何が問題なのですか?あなたはどんなエラーを出していますか? – Epodax

+0

@Epodax実際にはエラーは発生しません。 feedbackDelivered()関数はうまくいきます(パラメータが渡されたときに番号1の関数呼び出しのように)。私はちょうど私の電子メールの電子メールを得ない –

答えて

0

あなたはエラーを持っているbecau mail()関数はFALSEを返します。したがって、電子メールは送信されません。

この

$headers = "Content-type: text/html\r\n"; 
$headers .= "From: [email protected]\r\n"; 

のようなコンテンツ・タイプの後に「From」ヘッダー入れて、それは今働いているかどうかを確認してください。完全にcomment the line with From headerを試しておらず、成功したかどうか、メールを受け取ったかどうかを確認してください。

問題は、「From」ヘッダーが正しくないことが原因です。ほとんどの場合、電子メールは、メールが送信されたドメインのようなものでなければなりません。

さらに、構成するのが難しくない、例えば、PHPMailerを使用することをお勧めします。エラーログがあり、簡単にデバッグできるようになります。

関連する問題