联系表格不发送电子邮件

问题描述:

在阅读了关于这个问题的所有其他文章后,它并没有帮助我。我创建了一个HTML格式的联系表单,我觉得在PHP中缺少一些东西,我需要它提交后显示“您的电子邮件已成功发送”消息。另外,我收到的电子邮件提交后不显示发布的信息,不知道如何得到它做的是联系表格不发送电子邮件

/* Logic Script */ 
<?php 
// define variables and set to empty values 
$first_nameErr = $emailErr = $last_nameErr = $commentsErr = ""; 
$first_name = $last_name = $email = $comments = ""; 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

if (empty($_POST["first_name"])) { 
    $first_nameErr = "First Name is required"; 
     } else { 
    $name = test_input($_POST["first_name"]); 
    // check if name only contains letters and whitespace 
    if (!preg_match("/^[a-zA-Z ]*$/",$first_name)) { 
     $nameErr = "Only letters and white space allowed"; 
    } 
    } 


if (empty($_POST["last_name"])) { 
    $last_nameErr = "Last Name is required"; 
     // check if name only contains letters and whitespace 
    if (!preg_match("/^[a-zA-Z ]*$/",$last_name)) { 
     $last_nameErr = "Only letters and white space allowed"; 
    } 
    } 

if (empty($_POST["email"])) { 
    $emailErr = "Email is required"; 
    } else { 
    $email = test_input($_POST["email"]); 
    // check if e-mail address is well-formed 
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     $emailErr = "Invalid email format"; 
    } 
    } 

    if (empty($_POST["comments"])) { 
    $comments = ""; 
    } else { 
    $comments = test_input($_POST["comments"]); 
    } 
} 

//Code for sending the e-mail// 
$email = $_POST["email"]; 
$to = "[email protected]"; 
$subject = "Canada Algae E-mail Contact"; 
$headers = "From: $email\n"; 

$message = "A visitor to your site has sent the following email address to be added to your mailing list.\n 

Email Address: $email 
Name: $first_name $last_name 
Comments: $comments"; 



print("Your form was submitted successfully"); 

mail($to,$subject,$message,$headers); 
?> 

的HTML:。

/* display code */ 
<div class="border"></div> 

<body> 

<div id="wrapper"> 
    <div id="header"> 
     <header class="nav"> 
      <img src="images/CA_Logo.png" alt="Canada Algae Logo"> 
      <a href="#" class="flt_r"> 
       Contact Us 
      </a> 
     </header> 
    </div> 

    <div id="main"> 
     <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" id="contact_form"> 

      <label for="first_name">First Name</label> 
       <input type="text" name="first_name"> 
       <span class="error"> <?php echo $first_nameErr;?> </span> 
       <br /> 

      <label for="last_name">Last Name</label> 
       <input type="text" name="last_name"> 
       <span class="error"> <?php echo $last_nameErr;?> </span> 
       <br /> 

      <label for="email">E-mail</label> 
       <input type="text" name="email"> 

       <span class="error"> 
        <?php echo $emailErr;?> 
       </span> 
       <br /> 

      <label for="comments">Comments</label> 

      <textarea name="comments">Type your comments here</textarea> 

      <input type="submit" value="submit">  
     </form> 
    </div> 

    <div id="footer"> 
     <p>Contact Us!</p> 
    </div> 
</div> 
</body> 

<div class="border"></div> 

</html> 

这是所有在一个文件

+0

该PHP代码是否与HTML表单包含在同一页上?表单被设置为使用$ _SERVER ['PHP_SELF']重定向到自身,所以如果它们是两个不同的文件,则PHP将不执行任何操作。 – carbide20

+0

它是在同一页上是的 –

+0

几乎没有任何理由使用'stripslashes',特别是像这样的输入。魔术行情在几年前就被杀害了。 – tadman

在你PHP - 你有

$name = test_input($_POST["name"]); 

但在您的html输入被称为first_name。

您需要的PHP更改为:

$name = test_input($_POST["first_name"]); 

也 - 你实际上显示从表单提交的名称和注释 - 好像你只使用电子邮件地址。

+0

感谢指出,我没有修复它 –

+0

嗨Gavgrif - 只是一个简短的说明,说我们喜欢这里没有签名的帖子。我们倾向于将剖面块视为信号,并且不需要重复。谢谢! – halfer