2017-01-01 261 views
0

問題PHP電子郵件不工作 - 沒有收到電子郵件

就當我按提交的電子郵件網站,它現在一切正常,但我沒有收到電子郵件,有人請幫助?

PHP

<?php 

$first_name = $_POST ['first_name']; 
$last_name = $_POST ['last_name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$headers = "From:" . $first_name . $last_name; 

$to = "[email protected]"; 
$subject = "New Message"; 

print_r($_POST); 

mail ($to, $subject, $message, $headers); 
echo "Your Message has been sent"; 

?> 

HTML

<form action="contact.php" name="contact_form" method="post"> 
    <p> 
    First name: 
    <input name="first_name" type="text"/> 
    </p> 

    <p> 
    Last name: 
    <input name="last_name" type="text"/> 
    </p> 

    <p> 
    <br> 
    E-Mail: 
    <input name="email" type="text"/> 
    </p> 
    <br> 

    <p>Type your enquiry</p> 
    <p><textarea name"message"></textarea></p> 

    <p> 
    <input type="submit" name="submit" value="Submit"> 
    <input type="reset" name="reset" value="Reset"> 
    </p> 

    </form> 

舊錯誤消息+數據它被髮送(第二圖片)

enter image description here

enter image description here

+1

'From:'標題應該包含地址,而不是名稱。 – Barmar

+2

缺少分號 – Musa

+0

爲什麼你迴應說郵件沒有檢查mail()的返回值? – Barmar

回答

0

從方法post設置如下。

<form action="contact.php" name="contact_form" method="post"> 

在地址欄中的數據是默認get method.But你在PHP中使用$_POST[] file.So你沒有得到的值發送至。

此外,在如下面contact.php使用$headers

$headers = "From:" . $first_name . $last_name; 

而且

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

也分號$subject可變的末端。

$subject = "New Message"; 

和做以下....

$first_name = test_input($_POST ['first_name']); 
$last_name = test_input($_POST ['last_name']); 
$email = test_input($_POST['email']); 
$message = test_input($_POST['message']); 


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

當從用戶輸入的數據(用PHP裝飾

1.Strip不必要的字符(額外的空間,製表符,換行符)( )函數)

2.取出反斜槓()從用戶輸入的數據(用PHP的stripslashes()函數)

+0

謝謝,我仍然收到同樣的錯誤,對於郵件部分是否是正確的? ($ to,$ subject,$ message,$ headers「From:」。$ first_name。$ last_name); – Joshua

+0

嘗試'print_r($ _ POST);'你會得到值 –

+0

它看起來沒有任何值,只是一個500 Gate Gate錯誤仍然 – Joshua

0

更改您的PHP

$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$headers = "From: " . $email; 

$to = "[email protected]"; 
$subject = "New Message"; 

print_r($_POST); 

mail($to, $subject, $message, $headers); 
echo "Your Message has been sent"; 

它現在應該工作。 標題必須採用適當的格式(間距)。 「發件人」標題包含發件人的電子郵件地址。 在PHP中訪問數組時,請不要使用spaces:wrong = $ array [「blah」],good = $ array [「blah」]。這同樣適用於功能。

+0

我仍然沒有運氣,這可能是godaddy的問題嗎? – Joshua