【发布时间】:2011-07-26 16:05:59
【问题描述】:
我正在使用 php 的 mail() 函数将联系表格的输入通过电子邮件发送给相应人员的简单过程。奇怪的是,表单一直是用来处理电子邮件的,但有一天这一切都停止了,现在函数返回 false,但根本没有报错。
该站点位于共享主机上。当被问到这个问题时,他们建议我使用 smtp 中继 xx.xxx.x.xxx
如果我错了,请纠正我,但是 mail() 函数没有为此提供规定,对吗?是否正确配置继电器是否取决于主机?
我的问题是:这似乎是主机配置错误,还是我的代码?这是我使用的邮件代码示例:
$to = "xxx@xxx.co.za"; //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);。我希望你能得到一个有用的信息。来源:php.net/manual/en/function.error-reporting.php
-
@eisberg - 我有一个自定义错误函数将所有错误(E_ALL)记录到文件中,但仍然没有!它会发现最挑剔的错误,但仍然没有任何与 mail() 相关的错误。
-
E_ALL在所有 PHP 版本中都不是-1:-) -
@eisberg - 在上面的问题中查看我对错误处理的回复,我需要格式化代码,因此将其添加到问题中。
-
我的意思是
-1可以让您控制每个 PHP 版本中的每个错误。如果您没有收到-1错误,则很有可能您的配置有问题。