2013-04-22 86 views
1

我一直在尝试使用PHP的邮件()函数,但似乎无法得到邮件发送到我的电子邮件地址时,我测试联系人窗体。它只是进入一个白色的屏幕,没有更多的..它甚至没有显示下面的成功消息。PHP邮件发送简单的联系表格

这是PHP:

<?php 
if(isset($_POST['submit'])) { 
$name = $_POST['name']; 
$address = $_POST['address']; 
$number = $_POST['number']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$subject = 'Message from Reef website'; 
$to = '[email protected]'; 

if (empty($name) || empty($address) || empty($number) || empty($email) || empty($subject) || empty($message)) { 
    if (empty($name)) 
     $error['name'] = "Please enter your Full Name"; 
    if (empty($name)) 
     $error['address'] = "Please enter your address"; 
    if (empty($name)) 
     $error['number'] = "Please enter a contact number"; 
    if (empty($email)) 
     $error['email'] = "Please enter a valid Email Address"; 
    if (empty($message)) 
     $error['message'] = "Please write a message, enquiries or other concerns above"; 
} 
else { //if not empty 

    $headers="From: {$email}\r\nReply-To: {$email}"; 
    mail($to,$subject,$message,$headers); 
    $success = "Thank you! You're email has been sent."; 
} 
} 
?> 

这是我的HTML表单:

<form method="POST" action="mailer.php"> 
    <table border="1"> 
      <tr> 
    <td><label for="name" class="g">Name</label></td> 
    <td><input id="name" name="name" type="text" required autofocus></td> 
    </tr> 

    <tr> 
    <td><label for="address" class="g">Address</label></td> 
    <td><textarea rows="3" id="address" name="address" cols="50"></textarea></td> 
    </tr> 

    <tr> 
    <td><label for="number" class="g">Contact number</label></td> 
    <td><input id="number" name="text" type="text" required autofocus></td> 
    </tr> 

    <tr> 
     <td><label for="email" class="g">Email</label></td> 
     <td><input id="email" name="email" type="text" placeholder="[email protected]" required autofocus></td> 
     </tr> 

     <tr> 
     <td><label for="message" class="g">Enquiry</label></td> 
     <td><textarea rows="3" id="message" name="message" cols="50"></textarea></td> 
     </tr> 
     </table> 
     <input type="submit" value="Submit" name="submit"> 
</form> 

任何人都可以看到缺少了什么?看着其他类似的问题,这些都是我的,但他们说,他们的工作。

+0

那是因为你没有任何呼应的error..echo的他们,你就会知道什么是错误.. – 2013-04-22 11:37:35

+0

使用的error_reporting(E_ALL);在第一行,并给我们的错误 – Robert 2013-04-22 11:39:54

回答

1

它要一个空白页面的原因是,PHP页面是空白的!您似乎没有在页面的任何位置回应您的成功消息。

我建议改变你的形式,这样的HTML是如下:

​​

然后是PHP粘贴到网页的顶部。请记住将页面类型设置为.php而不是.html /。HTM

回声最后添加到您的窗体的顶部,这样成功的消息将显示,沿

<?php 
    if ($success) { 
     echo $success; 
    } 
?> 
+0

太棒了!谢谢。它现在正在工作,除了PHP成功消息打破了页面并显示在左侧角落?但至少它现在发送到电子邮件! ($ success){ echo“

".$success."
”;如果($ success){ – 2013-04-22 11:53:26

+0

}在这种情况下,请在成功消息的周围添加更多html,例如<?php ; } ?>然后在你的CSS中定位该类 – evilscary 2013-04-22 13:36:52

0

什么是您的php.ini文件中的SMTP服务器设置?您需要运行SMTP服务器来发送邮件。

更简单的解决方案是使用PHPMailer

0

你有一个问题

您试图访问这样

$number = $_POST['number']; 

但在你的形式,它是NAME =“文本”

<input id="number" name="text" type="text" required autofocus> 

因此改变形式数值现场到此

<input id="number" name="number" type="text" required autofocus> 

导致您的验证失败。

1
if (empty($name)) 
    $error['name'] = "Please enter your Full Name"; 
if (empty($name)) 
    $error['address'] = "Please enter your address"; 
if (empty($name)) 
    $error['number'] = "Please enter a contact number"; 

您在每if语句中使用$name。用相应的变量进行更改。

变化 <input id="number" name="text" type="text" required autofocus>

<input id="number" name="number" type="text" required autofocus>

我觉得你得到了它。您正在检查empty($number)父母if声明总是true,并且由于错误的变量($name),您没有收到任何消息。

+0

谢谢,这绝对有助于 – 2013-04-22 11:52:36

1

变化的线

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

if(mail($to,$subject,$message,$headers)) 
{ 
    echo "mail has been sent"; 
} 
else 
{ 
echo "error during sending mail"; 
} 

也改变你的ifs,因为你只检查一个变量

if (empty($name)) 

总是$命名

把你的第一线调试运行:

error_reporting(E_ALL); 

为什么要使用 “身份证” 是有必要的吗?

<input id="name" name="name" type="text" required autofocus>