-1

I have created a contact page and it is using PHP with HTML code. I have the code running on our server. I am not getting any Email when my code is run. I have tried a lot but I don't know how to fix this issue. Below is my code :

<?php
if (isset($_POST['email'])) {
    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to      = "pixel.thennarasu@tgmail.com";
    $email_subject = "Your email subject line";

    function died($error)
    {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error . "<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }

    // validation expected data exists
    if (!isset($_POST['first_name']) || !isset($_POST['last_name']) || !isset($_POST['email']) || !isset($_POST['telephone']) || !isset($_POST['comments'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');
    }
    $first_name    = $_POST['first_name']; // required
    $last_name     = $_POST['last_name']; // required
    $email_from    = $_POST['email']; // required
    $telephone     = $_POST['telephone']; // not required
    $comments      = $_POST['comments']; // required
    $error_message = "";
    $email_exp     = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

    if (!preg_match($email_exp, $email_from)) {
        $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
    }
    $string_exp = "/^[A-Za-z .'-]+$/";
    if (!preg_match($string_exp, $first_name)) {
        $error_message .= 'The First Name you entered does not appear to be valid.<br />';
    }
    if (!preg_match($string_exp, $last_name)) {
        $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
    }
    if (strlen($comments) < 2) {
        $error_message .= 'The Comments you entered do not appear to be valid.<br />';
    }
    if (strlen($error_message) > 0) {
        died($error_message);
    }
    $email_message = "Form details below.\n\n";

    function clean_string($string)
    {
        $bad = array(
            "content-type",
            "bcc:",
            "to:",
            "cc:",
            "href"
        );
        return str_replace($bad, "", $string);
    }

    $email_message .= "First Name: " . clean_string($first_name) . "\n";
    $email_message .= "Last Name: " . clean_string($last_name) . "\n";
    $email_message .= "Email: " . clean_string($email_from) . "\n";
    $email_message .= "Telephone: " . clean_string($telephone) . "\n";
    $email_message .= "Comments: " . clean_string($comments) . "\n";

    // create email headers
    $headers = 'From: ' . $email_from . "\r\n" . 'Reply-To: ' . $email_from . "\r\n" . 'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);
?>

    <!-- include your own success html here -->
    echo '@mail'; 
    Thank you for contacting us. We will be in touch with you very soon.
<?php
}
?>

My Contact form code:

<form name="contactform" method="post" action="send_form_email.php">
    <table width="450px">
        <tr>
            <td valign="top">
                <label for="first_name">First Name *</label>
            </td>
            <td valign="top">
                <input type="text" name="first_name" maxlength="50" size="30">
            </td>
        </tr>
        <tr>
            <td valign="top"">
                <label for="last_name ">Last Name *</label>
            </td>
            <td valign="top ">
                <input type="text " name="last_name " maxlength="50 " size="30 ">
            </td>
        </tr>
        <tr>
            <td valign="top ">
                <label for="email ">Email Address *</label>
            </td>
            <td valign="top ">
                <input type="text " name="email " maxlength="80 " size="30 ">
            </td>
        </tr>
        <tr>
            <td valign="top ">
                <label for="telephone ">Telephone Number</label>
            </td>
            <td valign="top ">
                <input type="text " name="telephone " maxlength="30 " size="30 ">
            </td>
        </tr>
        <tr>
            <td valign="top ">
                <label for="comments ">Comments *</label>
            </td>
            <td valign="top ">
                <textarea name="comments " maxlength="1000 " cols="25 " rows="6 "></textarea>
            </td>
        </tr>
        <tr>
            <td colspan="2 " style="text-align:center ">
                <input type="submit " value="Submit ">
            </td>
        </tr>
    </table>
</form>

I am getting the below message successfully:

Thank you for contacting us. We will be in touch with you very soon.

But I am not getting any mail in my id? How to get mail from my contact page? Any idea about it?

And Set Mail function in php.ini like this

[mail function]

 SMTP = dotnetportfolio.com;
 smtp_port = 25
Harry
  • 87,580
  • 25
  • 202
  • 214
Thennarasu
  • 474
  • 1
  • 6
  • 20
  • have you checked it in spam – Santosh Jagtap Jul 21 '15 at 11:25
  • yes brother i checked brother i am Not getting Email brother.. – Thennarasu Jul 21 '15 at 11:26
  • Why the @ in front of of `mail` function ? – Epodax Jul 21 '15 at 11:28
  • I have fixed grammar and capitalization mistakes in the post, reformatted the code by improving indentations and removing extra line breaks, removed the tags that were not relevant to the current question and also removed the language name from title as it is not required due to presence of tags. – Harry Jul 23 '15 at 12:38

3 Answers3

0

Fixed code, just removed @ in front of the mail.. I can't see any reason for it to be there:

<?php

if(isset($_POST['email'])) {



    // EDIT THE 2 LINES BELOW AS REQUIRED

    $email_to = "pixel.thennarasu@tgmail.com";

    $email_subject = "Your email subject line";





    function died($error) {

        // your error code can go here

        echo "We are very sorry, but there were error(s) found with the form you submitted. ";

        echo "These errors appear below.<br /><br />";

        echo $error."<br /><br />";

        echo "Please go back and fix these errors.<br /><br />";

        die();

    }



    // validation expected data exists

    if(!isset($_POST['first_name']) ||

        !isset($_POST['last_name']) ||

        !isset($_POST['email']) ||

        !isset($_POST['telephone']) ||

        !isset($_POST['comments'])) {

        died('We are sorry, but there appears to be a problem with the form you submitted.');       

    }



    $first_name = $_POST['first_name']; // required

    $last_name = $_POST['last_name']; // required

    $email_from = $_POST['email']; // required

    $telephone = $_POST['telephone']; // not required

    $comments = $_POST['comments']; // required



    $error_message = "";

    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

  if(!preg_match($email_exp,$email_from)) {

    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';

  }

    $string_exp = "/^[A-Za-z .'-]+$/";

  if(!preg_match($string_exp,$first_name)) {

    $error_message .= 'The First Name you entered does not appear to be valid.<br />';

  }

  if(!preg_match($string_exp,$last_name)) {

    $error_message .= 'The Last Name you entered does not appear to be valid.<br />';

  }

  if(strlen($comments) < 2) {

    $error_message .= 'The Comments you entered do not appear to be valid.<br />';

  }

  if(strlen($error_message) > 0) {

    died($error_message);

  }

    $email_message = "Form details below.\n\n";



    function clean_string($string) {

      $bad = array("content-type","bcc:","to:","cc:","href");

      return str_replace($bad,"",$string);

    }



    $email_message .= "First Name: ".clean_string($first_name)."\n";

    $email_message .= "Last Name: ".clean_string($last_name)."\n";

    $email_message .= "Email: ".clean_string($email_from)."\n";

    $email_message .= "Telephone: ".clean_string($telephone)."\n";

    $email_message .= "Comments: ".clean_string($comments)."\n";





// create email headers

$headers = 'From: '.$email_from."\r\n".

'Reply-To: '.$email_from."\r\n" .

'X-Mailer: PHP/' . phpversion();

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


?>



<!-- include your own success html here -->

 echo '@mail'; 

Thank you for contacting us. We will be in touch with you very soon.



<?php

}

?>
morha13
  • 1,847
  • 3
  • 21
  • 42
0

First of all, remove @ from mail function. With @ there will be no errors thrown. Mail function return bollean value so check it:

$mail = mail();
var_dump($mail);

After that, check logs on your mail server (server with script, AND where you except to get this mail), many problems are coused by setting wrong headers (like reply address etc.)

How to configure XAMPP on localhost: How to configure XAMPP to send mail from localhost?

Community
  • 1
  • 1
Daimos
  • 1,473
  • 10
  • 28
  • i have Removed that Line now showing error Like this Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in – Thennarasu Jul 21 '15 at 11:34
  • wrong mail configuration, what have you done on your server? What kind of server it is? We need to know more ;) Dont test it on localhost if you dont have configured mail service – Daimos Jul 21 '15 at 11:38
  • i don't have any Email server I have set My server address In my Localhost php.ini there only i changed looks like [mail function] ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury SMTP = dotnetportfolio.com; smtp_port = 25 – Thennarasu Jul 21 '15 at 11:40
  • so you dont have configured nothing, search for "Configure mail server on xampp": http://stackoverflow.com/questions/15965376/how-to-configure-xampp-to-send-mail-from-localhost – Daimos Jul 21 '15 at 11:44
  • Sir i have changed local side its working mail send.i have used SMTP. Not Working Server side – Thennarasu Jul 21 '15 at 12:07
0

Do you have a SMTP server setup? If no you need to be running a mail server locally. If this is Unix, enable sendmail If this is Windows install the Simple Mail Transfer Server (not sure if the name is correct) component of IIs. E.g. for windows 2003 follow this: http://msdn.microsoft.com/en-us/library/8b83ac7t.aspx

Santosh Jagtap
  • 995
  • 8
  • 17