2014-01-24 153 views
1

我的表单不会生成电子邮件,它只是将我重定向到空白页面。 我在我的服务器上的名为php的文件夹中有我的.php表单html 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._%-][email protected][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 

    } 

    ?> 
+0

是'php/send_form_email.php.php'相对于窗体html文件的PHP文件的确切路径?该文件确实有两个.php文件,对吗? – Luceos

+0

是的,我有我的www文件夹中使用webmin的ubuntu服务器我有我的php文件夹php/send_form_email.php是我的php窗体的确切路径。 对不起,我应该提到,在问题 – HaVoK

+0

哦,我现在看到我复制.php.php的扩展名。我现在觉得自己像个白痴。 imma修复它,并测试它,看看会发生什么 编辑:我修复了双扩展,仍然没有电子邮件,所以我想我在脚本中做了错误 – HaVoK

回答

2

下电子邮件输入类型需要有一个name属性称为“邮件”。你的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> 
+0

好吧如果我不为每种输入类型留下任何价值,这很重要吗? 即时编辑我的HTML并试一试 – HaVoK

+0

值属性是文本框的默认值。如果你输入任何值,它将显示在文本框中。无论您输入文本框,都会覆盖“值”属性。所以,不,这不重要。 – SyntaxLAMP

+0

好吧,这是我认为我不知道。所以我编辑了我的html,但仍然没有收到邮件。是否必须在我的Ubuntu盒子上设置某种邮件服务器来实际生成电子邮件并将其发送到文本框中指定的电子邮件? – HaVoK