Nasser
Nasser

Reputation: 2140

Mail function sends nothing

The following codes are responsible of sending mails using Mail() function. The problem that I'm facing is when an email is received, there is nothing (in other words no data is shown in the email). I tested all the functions and they are working properly.

<style>
#ajax_form {width:410px;font-family:verdana,arial;font-size:12px}
#ajax_form td{font-family:verdana,arial;font-size:12px}
#ajax_form_header {font-family:verdana,arial;font-size:1.3em;font-weight:bold;text-align:center}
#returned_value{font-family:verdana,arial;text-align:center;font-size:12px;color:#000000}
#go {border:1px solid #CCCCCC;background:#FFF}
</style>
<script type="text/javascript" src="cform.js"></script>

<div id="ajax_form">
<form>
<div id="ajax_form_header">Contact Us Form</div>
<br />
<table width="350" border="0" align="center" cellpadding="4" cellspacing="0">
  <tr> 
    <td><label>Your Name:</label></td>
    <td><input type="text" id="name" style="width:100%" /></td>
  </tr>
  <tr> 
    <td><label>Your Email:</label></td>
    <td><input type="text" id="email" style="width:100%" /></td>
  </tr>
  <tr> 
    <td><label>Your Subject:</label></td>
    <td><input type="text" id="subject" style="width:100%" /></td>
  </tr>
  <tr> 
    <td colspan="2">
        <label>Your Message:</label><br /><br />
        <textarea name="body" style="width:100%;height:160px" id="body"></textarea>
    </td>
  </tr>
  <tr align="center"> 
    <td colspan="2"><input type="button" value="Submit" id="submit" onClick="return check_values();"></td>
  </tr>
</table>
</form>
  <br />
  <div align="center"><!-- leave this link please --><a href="http://www.freecontactform.com/ajax_form.php">Ajax Contact Form</a></div><br /><br />
    <div id="confirmation" style="display:none" align="center"></div>
</div>

cform.js code:

var http = createRequestObject();
var areal = Math.random() + "";
var real = areal.substring(2,6);

function createRequestObject() {
    var xmlhttp;
    try { xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }
  catch(e) {
    try { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
    catch(f) { xmlhttp=null; }
  }
  if(!xmlhttp&&typeof XMLHttpRequest!="undefined") {
    xmlhttp=new XMLHttpRequest();
  }
    return  xmlhttp;
}

function sendRequest() {
    var rnd = Math.random();
    var name = escape(document.getElementById("name").value);
    var email = escape(document.getElementById("email").value);
    var subject = escape(document.getElementById("subject").value);
    var body = escape(document.getElementById("body").value);

    try{
    http.open('POST',  'pform.php');
    http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http.onreadystatechange = handleResponse;
        http.send('name='+name+'&email='+email+'&subject='+subject+'&body='+body+'&rnd='+rnd);
    }
    catch(e){}
    finally{}
}

function check_values() {
    var valid = '';

    var name = document.getElementById("name").value;
    var email = document.getElementById("email").value;
    var subject = document.getElementById("subject").value;
    var body = document.getElementById("body").value;
    if(trim(name) == "" ||
        trim(email) == "" ||
        trim(subject) == "" ||
        trim(body) == "") {
            alert("Please complete all fields");
    } else {
        if(isEmail(email)) {
            document.getElementById("submit").disabled=true;
            document.getElementById("submit").value='Please Wait..';
            sendRequest();
        } else {
            alert("Email appears to be invalid\nPlease check and try again");
            document.getElementById("email").focus();
            document.getElementById("email").select();
        }
    }
}

function handleResponse() {
    try{
    if((http.readyState == 4)&&(http.status == 200)){
        var response = http.responseText;
      document.getElementById("confirmation").innerHTML = response;
      document.getElementById("confirmation").style.display ="";
        }
  }
    catch(e){}
    finally{}
}

function isUndefined(a) {
   return typeof a == 'undefined';
}

function trim(a) {
    return a.replace(/^s*(S*(s+S+)*)s*$/, "$1");
}

function isEmail(a) {
   return (a.indexOf(".") > 0) && (a.indexOf("@") > 0);
}

pform.php file:

include 'cform_config.php';

if(!isset($rnd) || !isset($name) || !isset($email) || !isset($subject) || !isset($body)) {
    echo $error_message;
    die();
}

    $email_from = $email;
    $email_subject = "Contact Form: ".stripslashes($subject);
    $email_message = "Please find below a message submitted by '".stripslashes($name);
    $email_message .="' on ".date("d/m/Y")." at ".date("H:i")."\n\n";
    $email_message .= stripslashes($body);

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

    mail($email_it_to, $email_subject, $email_message, $headers);

    echo "<b>$confirmation</b>";
    die();

cform_config.php file:

  $page_title = "Contact Us Form";
  $email_it_to = "your_own_email_address@some_domain.com";
  $error_message = "Please complete the form first";
  $confirmation = "Thank you, your message has been successfully sent.";

I tracked the check_values() function following with sendRequest() function and I found nothing wrong

Upvotes: 0

Views: 126

Answers (2)

Nasser
Nasser

Reputation: 2140

As @Dagon said, the problem was with $_POST['email']. Therefore, I have to add this part at the beginning of pform.php file.

Upvotes: 0

John Conde
John Conde

Reputation: 219934

$email_message .= stripslashes($body); should be
$email_message .= stripslashes($email_message );. $body doesn't exist.

(I don't know why you are using stripslashes() here or anywhere in your code. It should not be necessary).

Upvotes: 3

Related Questions