我正在使用php的mail()函數進行電子郵件輸入聯繫表單到相應人員的簡單過程。奇怪的是,表單總是用來處理電子郵件,但有一天這一切都停止了,現在函數返回false,但根本沒有提供任何錯誤。PHP mail()函數返回false,但沒有錯誤
該網站位於共享主機。當被問及這一點,他們推薦我用的SMTP中繼xx.xxx.x.xxx
糾正我,如果我錯了,但郵件()函數沒有提供規定的這樣做呢?當然,主機需要配置正確的繼電器嗎?
我的問題是這樣的:這似乎是一個錯誤的主機配置,或者它是我的代碼?下面是我用的郵件代碼示例:
$to = "[email protected]"; //to who?
$subject = "Website Contact: $mysubject";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "From: $fname<$email1>\r\n";
$headers .= "Reply-To: $email1\r\n";
$headers .= "Return-Path:$email1\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$headers .= "Content-Transfer-Encoding: quoted-printable\r\n";
$msg2 = nl2br($msg);
$send = mail($to, $subject, $msg2, $headers); //process mail
if(!$send):
//error stuff here
endif;
非常感謝, 西蒙
@eisberg - 我用這樣的自定義錯誤處理程序:
//error handler function
function customError($errno, $errstr){
$err = "\n".date('Y-m-d H:m:s')." Error: [$errno] $errstr";
$fh = fopen("errlog.txt", 'a+');
fwrite($fh, $err);
fclose($fh);
}
set_error_handler("customError", E_ALL);
會那意味着我需要將set_error_handler("customError", E_ALL);
更改爲set_error_handler("customError", -1);
?
嘗試** error_reporting(-1); **上面的代碼。我希望你得到一個可用的消息。來源:http://php.net/manual/en/function.error-reporting.php – eisberg 2011-03-31 07:39:50
@eisberg - 我有一個自定義錯誤函數記錄所有錯誤(E_ALL)文件,仍然沒有!它挑起最挑剔的錯誤,但仍然沒有任何郵件()相關。 – SimonDowdles 2011-03-31 07:47:45
'E_ALL'在所有PHP版本中都不是'-1':-) – eisberg 2011-03-31 07:50:47