Paul
Paul

Reputation: 15

Not receiving all fields in php mail

Here is the mail handler only part being received in sent emails is the actual message missing parts are name and phone.

<?php
session_start();

    $email_to = "[email protected]";
    $name     = $_POST['name'];
    $phone    = $_POST['phone'];
    $email    = $_POST['email'];
    $subject   = $_POST['subject'];
    $message    = $_POST['message'];

    $headers  = "From: $email\r\n";
    $headers .= "Reply-To: $email\r\n";

    if(mail($email_to, $subject, $message, $headers)){
        echo "success";       
    } 
    else{
        echo "failed";     
    }  
?>

Here is the html part which I have checked over and over and cant figure out whats wrong

<form id="contact" class="row" name="form1" method="post" action="">

                <div class="span2">
                <label>Name <span class="req">*</span></label>
                <input type="text" class="full" name="name" id="name"/>
                <div id="error_name" class="error">Please check your name</div>
                </div>

                <div class="span2">
                <label>Phone <span class="req">*</span></label>
                <input type="text" class="full" name="phone" id="phone"/>
                <div id="error_phone" class="error">Please check your phone</div>
                </div>

                <div class="span4">
                <label>Email <span class="req">*</span></label>
                <input type="text" class="full" name="email" id="email"/>
                <div id="error_email" class="error">Please check your email</div> 
                </div>

                <div class="span8">
                <label>Message <span class="req">*</span></label>
                <textarea cols="8" rows="10" name="message" id="message" class="full"></textarea>
                <div id="error_message" class="error">Please check your message</div>
                <div id="mail_success" class="success"> Thank you. Your message has been sent.</div>
<div id="mail_failed" class="error">Error, email not sent</div>

<p id="btnsubmit"><input type="submit" id="send" value="Send" class="btn btn-large"/></p>               
                </div>              
              </form>

Js script -------------------

$(document).ready(function(){
  $("#send").click(function(){
      var name = $("#name").val();
      var phone = $("#phone").val();
    var email  = $("#email").val();
    var message  = $("#message").val();

    var error = false;

    if (name.length == 0) {
        var error = true;
        $("#error_name").fadeIn(500);
    }
    else {
        $("#error_name").fadeOut(500);
    }

    if (phone.length == 0) {
        var error = true;
        $("#error_phone").fadeIn(500);
    }
    else {
        $("#error_phone").fadeOut(500);
    }

     if(email.length == 0 || email.indexOf("@") == "-1" || email.indexOf(".") == "-1"){
       var error = true;
       $("#error_email").fadeIn(500);
     }
     else {
       $("#error_email").fadeOut(500);
     }

     if(message.length == 0){
        var error = true;
        $("#error_message").fadeIn(500);
     }else{
        $("#error_message").fadeOut(500);
     }

     if(error == false){
       $("#send").attr({"disabled" : "true", "value" : "Loading..." });

       $.ajax({
         type: "POST",
         url : "send.php",    
         data: "name=" + name + "&email=" + email + "&subject=" + "Website Enquiry" + "&message=" + message,
         success: function(data){    
          if(data == 'success'){
            $("#btnsubmit").remove();
            $("#mail_success").fadeIn(500);
          }else{
            $("#mail_failed").html(data).fadeIn(500);
            $("#send").removeAttr("disabled").attr("value", "send");
          }     
         }  
       });  
    }
  return false;                      
  });    
});

Upvotes: 1

Views: 161

Answers (1)

user796443
user796443

Reputation:

Obviously, you are missing parts!... You simply declare variables, but you didn't include them in the mail itself.

In this example, I'm adding $name and $phone to $message body.

<?php
session_start();

    $email_to = "[email protected]";
    $name     = $_POST['name'];
    $phone    = $_POST['phone'];
    $email    = $_POST['email'];
    $subject  = $_POST['subject'];
    $message  = $_POST['message'] . "\n";
    $message  .= "Name: " . $name . "\n";
    $message  .= "Phone: " . $phone;

    $headers  = "From: $email\r\n";
    $headers .= "Reply-To: $email\r\n";

    if(mail($email_to, $subject, $message, $headers)){
        echo "success";       
    } 
    else{
        echo "failed";     
    }  
?>

Upvotes: 3

Related Questions