2016-12-22 7 views
0

私は連絡フォームを使用して電子メールを送信すると、そのメールは空白です(件名もメッセージも何もありません)。電子メールは私のGmailに完全に送信されますが、 。php電子メールを送信すると空白になる

JS

$('#contactform').submit(function(){ 
    var action = $(this).attr('action'); 
    $("#message").slideUp(250,function() { 
     $('#message').hide(); 
     $('#submit') 
      .after('<img src="img/assets/cbp-loading.gif" class="loader" />') 
      .attr('disabled','disabled'); 
     $.post(action, { 
      name: $('#name').val(), 
      email: $('#email').val(), 
      subject: $('#subject').val(), 
      comments: $('#comments').val(), 
     }, 
      function(data){ 
       document.getElementById('message').innerHTML = data; 
       $('#message').slideDown(250); 
       $('#contactform img.loader').fadeOut('slow',function(){$(this).remove()}); 
       $('#submit').removeAttr('disabled'); 
       if(data.match('success') != null) $('#contactform').slideUp(850, 'easeInOutExpo'); 
      } 
     ); 
    }); 

PHP

<?php 
$name = isset($_POST['name']) ? $_POST['name'] : ''; 
$email = isset($_POST['_replyto']) ? $_POST['_replyto'] : ''; 
$subject = isset($_POST['_subject']) ? $_POST['_subject'] : ''; 
$comments = isset($_POST['comments']) ? $_POST['comments'] : ''; 

$to = '[email protected]'; 
$subject = $subject; 
$comments = "From: " . $name . ", " . $email . "\r\n \r\n" . "comments: " . $comments; 
if (mail($to, $email, $subject, $comments)) { 
    echo "Thanks for contacting us, we will get back to you soon!"; 
} else { 
    echo "Sorry, there was an error sending the email. Please ensure you have filled out the form correctly and try again!"; 
} 

HTML

form method="post" action="contact-form.php" name="contactform" id="contactform"> 
          <fieldset> 
            <input name="name" type="text" id="name" placeholder="Name"/> 
            <input name="email" type="text" id="email" placeholder="Email"/> 
            <input name="subject" type="text" id="subject" placeholder="Subject"/> 
          </fieldset> 
          <fieldset> 
            <textarea name="comments" cols="40" rows="3" id="comments" placeholder="Message"></textarea> 
          </fieldset> 
          <input type="submit" class="submit" id="submit" value="Send Message" /> 
         </form> 
        </div> 
+1

を:最初に、あなたのブラウザの開発コンソールを開き、Ajaxのポストが実際に期待値を送るかどうかを確認します。もしそうなら、次に '$ _POST'のスーパーグローバルをサーバ側のログファイルにダンプし、それらの値を受け取るかどうかをチェックします。 – arkascha

+0

あなたのSESSION ...が始まっていることを確認しますか? '$ name = isset($ _ POST ['name'])をチェックする方法は? $ _POST ['name']: ''; $ email = isset($ _ POST ['replyto'])? $ _POST ['_ replyto']: ''; $ subject = isset($ _ POST ['_ subject'])? $ _POST ['_ subject']: ''; $ comments = isset($ _ POST ['comments'])? $ _POST ['comments']: ''; 'は実際にはそれを静かに"失敗 "させます。 –

+0

フォームが動作します...私は電子メールを受け取ります...件名がないとか...何か....ボタンの送信がクリックされたときに電子メールを送信するようにトリガーすることを明確にしています... – digitalhive

答えて

1

あなたが投稿したデータは、あなたが期待しているものとは異なっています。

{ 
    name: $('#name').val(), 
    email: $('#email').val(), 
    subject: $('#subject').val(), 
    comments: $('#comments').val(), 
} 

これは、$_POSTで利用可能なこれらのフィールドのみを意味します。 ここでJSのキー名を変更するか、PHPのように変更してください。この

if (mail($to, $email, $subject, $comments)) { 
    echo "Thanks for contacting us, we will get back to you soon!"; 
} else { 
    echo "Sorry, there was an error sending the email. Please ensure you have filled out the form correctly and try again!"; 
} 

は次のようになります。@anwerjunaid何に加えて

$email = isset($_POST['email']) ? $_POST['email'] : ''; 
$subject = isset($_POST['subject']) ? $_POST['subject'] : ''; 
+0

電子メールはうまく動作し、問題があります。メッセージにテキストを入力するとdosntが届きます。 – digitalhive

+0

JSの 'data'オブジェクトとして過去のキーは' $ _POST'でのみ利用できます。 – anwerj

0

はあなたのPHPの1行の順序を変更する必要がある、と述べ

if (mail($to, $subject, $comments)) { 
    echo "Thanks for contacting us, we will get back to you soon!"; 
} else { 
    echo "Sorry, there was an error sending the email. Please ensure you have filled out the form correctly and try again!"; 
} 

注文は受取人、電子メールの件名、およびメッセージの内容でなければなりません。

あなたから含めるかに返信し、このような何か追加したい場合は:だから自分を掘り始める

$headers = 'From: [email protected]' . "\r\n" . 
'Reply-To: [email protected]' . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

mail($to, $subject, $comments, $headers); 
関連する問題