HaVoK
HaVoK

Reputation: 13

html php send form doesn't send email

My form doesn't generate an E-Mail it just redirects me to a blank page. i have my .php form in a folder named php on my server

thank you for your help.

here is my html code

      <form id="form" method="post" action="php/send_form_email.php">
      <fieldset>
        <label><strong>Name:</strong>
          <input type="text" value="">
        </label>
        <label><strong>Email:</strong>
          <input type="text" value="">
        </label>
        <label><strong>Phone:</strong>
          <input type="text" value="">
        </label>
        <label><strong>Message:</strong>
          <textarea></textarea>
        </label>
        <div class="btns"><a href="#"  class="link">Clear</a><a href="php/send_form_email.php" class="link">Send</a></div>
      </fieldset>
    </form>

here is the php code i'm using:

<?php

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



// EDIT THE 2 LINES BELOW AS REQUIRED

$email_to = "#@#.com";

$email_subject = "havok security contact form";





  function died($error) {

    // your error code can go here

    echo "We are very sorry, but there was an error 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['name']) ||

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

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

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

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

}



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

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

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

$comments = $_POST['message']; // 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,$name)) {

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

  }


  if(strlen($message) < 2) {

   $error_message .= 'The Message 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 .= "Name: ".clean_string($first_name)."\n";

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

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

$email_message .= "Message: ".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 -->



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



   <?php

   }

    ?>

Upvotes: 1

Views: 340

Answers (1)

SyntaxLAMP
SyntaxLAMP

Reputation: 985

The input type under email needs to have a name attribute called "email". Your PHP script is looking to see if $_POST["email"] is set, and it is not. So, this should work:

<form id="form" method="post" action="php/send_form_email.php">
      <fieldset>
        <label><strong>Name:</strong>
          <input type="text" name="name" value="">
        </label>
        <label><strong>Email:</strong>
          <input type="text" name="email" value="">
        </label>
        <label><strong>Phone:</strong>
          <input type="text" name="phone" value="">
        </label>
        <label><strong>Message:</strong>
          <textarea name = "message"></textarea>
        </label>
        <div class="btns"><a href="#"  class="link">Clear</a><a href="php/send_form_email.php" class="link">Send</a></div>
      </fieldset>
    </form>

Upvotes: 2

Related Questions