2015-04-25 27 views
1

我有一個contact.html表單,它將字段提交給contact.php腳本;但是,我沒有收到我的收件箱中的電子郵件。是的:電子郵件地址是正確的。這裏的地址給form web page 這裏是爲contact.php沒有從我的php聯繫表格中收到電子郵件

<?php 

    $my_email = "[email protected]"; 
    $final_msg = ""; 

    //validation function 
    function validate($data) { 
     $data = trim($data); //removing white space and tabs 
     $data = stripslashes($data); //removing \ 
     $data = htmlspecialchars($data); //converting to html 
     return $data; 
    } 

    if($_SERVER['REQUEST_METHOD'] == "POST") { 
      $name = validate($_POST["name"]); 
      $email = validate($_POST["email"]); 
      $subject = validate($_POST["subject"]); 
      $message = validate($_POST["message"]); 

    } 
    $final_msg += "name: " . $name . "\n" . 
       "email: " . $email . "\n" . 
       "subject: " . $subject . "\n" . 
       "message: ". $message; 

    $headers = "From: [email protected] \r\n" . "Reply-To: " . $email . "\r\n"; 

    if(mail($my_email, $subject, $final_msg, $headers)) { 
     echo "<b>Your Message Was Successfuly Sent!... Thanks</b>" . "<br>"; 
     echo "<b>name: </b>" . $name . "<br>"; 
     echo "<b>email: </b>" . $email . "<br>"; 
     echo "<b>subject: </b>" . $subject . "<br>"; 
     echo "<b>message: </b>" . $message; 
    } 
    else { 
     echo "<b>Your Message Could not be Sent!... Sorry</b>"; 
    } 


?> 
+0

任何錯誤消息insteda? – panther

+0

是的,知道這是如何失敗將是有益的。如果還不能將PHP設置爲冗長並更新您的文章W /一些診斷信息? – metaColin

+0

我主要用Java編程,所以我不是在瀏覽器上調試的專家,我只是開始瞭解javscript/php。我怎麼能啓用PHP詳細?...意思是,當我正在尋找答案 – miatech

回答

1

你用壞串接操作的代碼。

正確的字符串是.=,而不是+=

$final_msg .= '...'; 

然後,如果表格被髮送,一切都應該在條件。現在,每次腳本加載時都嘗試發送郵件,而不管表單是否成功發送。

if($_SERVER['REQUEST_METHOD'] == "POST") { 
    // sanitize form data, prepare $headers, $final_msg here 
    if (mail(...)) { 
     ... 
    } else { 
     ... 
    } 
} 

條件應該是

if (filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL) && 
    !empty($_POST['name']) && 
    !empty($_POST['subject']) && 
    !empty($_POST['message']) 
) { 
    // 
} else { 
    // incomplete form was sent, or data are incorrect 
} 

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

+0

如果不從from本身調用腳本,該怎麼執行呢?因此,將$ _SERVER ['REQUEST_METHOD']設置爲POST。這意味着腳本剛剛通過POST方法獲取數據......對嗎?糾正我......哦,我的東輸入檢查也通過javscript之前表單提交...我知道JavaScript可能被禁用...你是否建議檢查輸入與PHP呢? – miatech

+0

@miatech:這只是一個聯繫表單,當然沒什麼大的。在服務器端驗證錯誤的數據是一種很好的做法,在普通的PHP中包括前端/末端的錯誤消息需要2分鐘。關於'POST'方法:當然,你是對的,但是在這種情況下必須是我上面寫的整個腳本,而不僅僅是一個帶有設置變量的部分。 – panther

相關問題