2013-04-22 157 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> 
相關問題