2016-10-30 13 views
-1

jquery、ajax、およびphpで連絡先フォームを作成しようとしています。 html jqueryのボタンをクリックすると、ajaxがphpにリクエストを行い、php mail()関数を使用して電子メールを送信します。しかし、「送信」をクリックすると、すべてがOKで、メッセージが送信されたユーザーに警告するajax関数の成功関数が実行されます。今、私はそれが送られることになっている受信トレイに行くとき私は電子メールを取得しません。私はWindows 7、ecowebhostでこれを実行しています。PHPメールが送信されたと表示されますが、受信トレイを開いてもメッセージが表示されません

ここはhtml形式です。

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src = "js/callmail.js"></script> 

</head> 

<body ng-app = ""> 

      <div class = "container"> 

    <form name = "contact"> 

     <label for = "subject" class = "control-label">Subject:</label> 
     <input name = "subject" id = "subject" ng-model = "subject" required/> 
     <span class = "warning" ng-show="contact.subject.$touched && contact.subject.$invalid">You Must Enter a subject!</span> 
     <span class = "success" ng-show="contact.subject.$touched && contact.subject.$valid">Valid!</span> 

     <br/> 

     <label for = "body" class = "control-label">Body:</label> 
     <input name = "body" id = "body" ng-model = "body" required/> 
     <span class = "warning" ng-show="contact.body.$touched && contact.body.$invalid">Your email must have a body!</span> 
     <span class = "success" ng-show="contact.body.$touched && contact.body.$valid">Valid!</span> 

     <br/> 

     <label for = "signature" class = "control-label">Return Email:</label> 
     <input name = "signature" id = "signature" ng-model = "signature" type = "email" required/> 
     <span class = "warning" ng-show="contact.signature.$touched && contact.signature.$invalid">You must enter a valid return email!</span> 
     <span class = "success" ng-show="contact.signature.$touched && contact.signature.$valid">Valid!</span> 

     <br/> 

     <button ng-disabled = "contact.$invalid" id = "sendmail" type = "submit" class = "btn btn-success">Submit</button> 

    </form> 

ここにAJAXとjQueryのです:

$(function() { 
$("#sendmail").click(function() { 

    var data = { 

     to: "[email protected]", 
     subject: $("#signature").val() + ": " + $("#subject").val(), 
     message: $("#body").val(), 
    }; 

    $.ajax({ 

     type: "POST", 
     url: "email.php", 
     data: data, 
     success: function() { 

      alert("Message sent"); 

     } 

    }); 

    console.log(data); 

}); 

}); 

、ここでは、PHPのコードです:これらの言語のそれぞれに

<?php 
    if ($_POST["submit"]) { 


     $subject = $_POST["subject"]; 
     $message = $_POST["body"]; 
     $headers = "Reply to: " . $_POST["signature"]; 

     mail("[email protected]", $subject, $message, $headers); 

    } 

?> 

非常に新しいので、私は、ここからどこに行くのか全く分かりません。

+0

PHPは実際に何かしていますか?私は 'submit' POST変数を見ることができないので、' if($ _POST ["submit"]) 'は常にfalseです。 – DavidG

+0

ボタンはsubmit POST変数として機能しませんか? –

+1

これは可能ですが、あなたがAjaxで投稿しているので、あなたは 'data'を手掛かりにし、それを含めません。 – DavidG

答えて

-2
$(function() { 
$("#sendmail").click(function() { 
    var to = "[email protected]"; 
    var subject = $("#signature").val() +": " + $("#subject").val(); //?? WHERE IS SUBJECT INPUT???? 
    var message = $("#body").val(); 
    var signature = $("#signature").val(); 

    var data = { 

     to: to, 
     subject: subject, 
     message: message, 
     signature: signature 
    }; 

    $.ajax({ 

     type: "POST", 
     url: "email.php", 
     data: data, 
     success: function(msg) { 

      console.log(msg); 

     } 

    }); 

    console.log(data); 
    return false; 
}); 
}); 

/////

if(isset($_POST["subject"])) { 
    $subject = $_POST["subject"]; 
    $message = $_POST["body"]; 
    $headers = "Reply to: " . $_POST["signature"]; 

    if(!mail("[email protected]", $subject, $message, $headers)) { 
     echo 'something is wrong'; 
    } else { 
     echo 'nothing is wrong'; 
    } 


} 

そして、あなたは同様にスパムフォルダをチェックすることもできます。 localhostまたは自分のウェブサイトから送信していますか? xamppなどのWebサーバーソフトウェアの中には、許可/実行できないものがありますか?このメール機能はデフォルトで使用されます。

+0

これを行うとエコーはありませんか? (何も起こりません) –

+0

と私はecowebhostの自分のウェブサイトからそれを実行しています –

+0

あなたはページにエコーが表示されません。これはAJAXコールで、リクエストに対する応答として表示されます。ブラウザのWebコンソールでレスポンスを表示してみてください。 –

関連する問題