html php发送表单不发送电子邮件

时间:2014-01-24 05:48:54

标签: php html5 forms

我的表单不生成电子邮件,只是将我重定向到空白页面。 我的.php表单在我服务器上名为php的文件夹中

谢谢你的帮助。

这是我的HTML代码

      <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>

这是我正在使用的PHP代码:

<?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

   }

    ?>

1 个答案:

答案 0 :(得分:2)

电子邮件下的输入类型需要具有名为“email”的名称属性。您的PHP脚本正在查看是否设置了$ _POST [“email”],而不是。所以,这应该有效:

<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>