2012-02-07 63 views
0

我有以下PHP文件:php mail()一直返回false。編碼問題或託管問題

<?php 

$to = "[email protected]"; 
$from = $_POST["from"]; 
$subject = $_POST["subj"]; 
$message = $_POST["body"]; 
$headers = "From: ".$from. 
    " X-Mailer: php"; 

if(mail($to, $subject, $message, $headers)){ 
    header("Location: resume.html"); 
} else{ 
    echo("<p>".$to." ".$from." ".$subject." ".$message." ".$headers."</p>"); 
} 

?> 

每次它呼籲,它返回false。有任何想法嗎?

+1

嘗試設置'error_reporting(E_ALL)',看看是否有其他錯誤出現。 – 2012-02-07 19:58:20

+0

你的腳本很容易被新的頭文件「注入」(有點像SQL注入)。雖然潛在的破壞很小,但攻擊者至少可以添加一個「Cc」行,以便他們可以在調試時發現「$ to」地址 – SimonMayer 2012-02-07 20:09:28

+0

「mail()」是非常糟糕的。如果最終轉動輪子試圖發現問題,可以臨時(或永久)嘗試一個像SwiftMailer這樣的郵件庫。這些庫會給你更好的反饋。 – 2012-02-07 20:36:57

回答

3

您的標題格式不正確。你必須有他們之間的\r\n,而不是你在這裏看到的空間。

$headers = "From: ".$from."\r\n" 
      ."X-Mailer: php"; 
+0

添加了建議\ r \ n。沒有運氣。我會嘗試替代路線,我想。 – amdilley 2012-02-07 22:03:39

+0

奇怪的是,當我將代碼更改爲'$ headers ='From:「+ $ from。」\ r \ n「時,郵件會通過。」X-Mailer:php「;'但是,從發件人地址應該是這個返回0。僅僅是因爲+格式不正確? – amdilley 2012-02-07 23:14:31