我正在使用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