2015-06-08 189 views
-1

我有這些在2個不同的服務器上完全相同的PHP聯繫表格代碼。 1按預期工作,但另一個正在返回錯誤消息而不是成功消息。另外,電子郵件不會發送給我。PHP聯繫表返回錯誤消息

Contact.php代碼如下:

<?php 
ob_start(); 
if(isset($_POST['submit'])) 
{ 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $query = $_POST['message']; 
    $email_from = $name.'<'.$email.'>'; 

$to="[email protected]"; 
$subject="Enquiry"; 
// $headers = 'MIME-Version: 1.0' . "\r\n"; 
//$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= "From: ".$email_from."\r\n"; 
$message="  
Name: 
$name  
Email: 
$email  
Message: 
$query 
"; 
    if(mail($to,$subject,$message,$headers)) 
     header("Location: http://www.website.com/contact.php?msg=Successful Submission! Thank you for contacting us."); 
    else 
     header("Location: http://www.website.com/contact.php?msg=Error Sending Email!"); 
} 
?> 

我想知道,如果它是權限/服務器的問題? 任何幫助將不勝感激!謝謝!

回答

0

您的代碼構造是正確的,並且返回值(這是您的自定義錯誤)可能是正確的「if」 mail函數失敗。

很多時候我們發現php mail()函數不起作用。在某些情況下,即使函數返回true也不會發送電子郵件。以下是您可以在調試時檢查的要點:

  1. 首先檢查sendmail_path變量設置是否正確。您可以通過在頁面中回顯phpinfo()來查看它。典型值爲 /usr/sbin/sendmail -t -i
  2. 如果要在 函數的第4個參數中發送額外的標頭,請嘗試刪除它併發送。在郵件功能中, 有一個非常常見的錯誤標題。
  3. 檢查您的服務器是否安裝了垃圾郵件過濾器,該郵件過濾器阻止了您的電子郵件,該郵件過濾器爲 。

如果您有訪問權限,請檢查您的郵件日誌文件,以查看郵件服務器是否阻止了電子郵件或尚未到達服務器。如果日誌中沒有輸入您的電子郵件,這意味着您的php代碼或php配置有問題。如果它在日誌中,您可以看到它未交付的原因。 郵件日誌文件的典型路徑是/ var/log/maillog

+0

sendmail_path顯示爲「無值」...是主要問題嗎? – Melvy

+0

@ Melvallouse'可以找到sendmail程序,通常是/ usr/sbin/sendmail或/ usr/lib/sendmail。 configure會爲你找到一個真正的嘗試,並設置一個默認值,但如果失敗,你可以在這裏設置它。http://php.net/manual/en/mail.configuration.php。如果未設置,您的郵件永遠不會發送 –

+0

感謝您隔離問題。我不知道該從哪裏開始設置。 = 0 sendmail_path =首先沒有值是什麼意思?天哪。再次感謝您回答我的問題! – Melvy