tags:

views:

41

answers:

1

I am using a PHP Mail form with AJAX and it's not sending any mail. What am I missing here?

send.php

<?php
    error_reporting(E_NOTICE);

    function valid_email($str)
    {
     return ( ! preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
    }

    if($_POST['first_name']!='' && $_POST['last_name']!='' && $_POST['e_mail']!='' && valid_email($_POST['e_mail'])==TRUE && strlen($_POST['message'])>30)
    {
     $to = '[email protected]';
     $headers =  'From: '.$_POST['e_mail'].''. "\r\n" .
       'Reply-To: '.$_POST['e_mail'].'' . "\r\n" .
       'X-Mailer: PHP/' . phpversion();
     $subject = "Hello! I'm testing my new ajax email that I got from roscripts.com";
     $message = htmlspecialchars($_POST['message']);

     if(mail($to, $subject, $message, $headers))
     {//we show the good guy only in one case and the bad one for the rest.
      echo 'Thank you '.$_POST['first_name'].'. Your message was sent';
     }
     else {
      echo "Message not sent. Please make sure you're not
       running this on localhost and also that you 
       are allowed to run mail() function from your webserver";
     }
    }
    else {
     echo 'Please make sure you filled all the required fields, 
     that you entered a valid email and also that your message 
     contains more then 30 characters.';
    }
?>
A: 

Is your email setup in PHP? Check that first, otherwise there doesn't seem to be any issue here that I can see. You should get some kind of output from this if/else block.

I would start by reviewing PHP error logs, to see if your mail() fn is working. That may be the cause.

Jakub
it was the message error. If the message is less than 30 it shows the error!
HollerTrain