我正在使用php的mail()函数来简单地将联系表单的输入通过电子邮件发送给相应的人.奇怪的是,表单始终用于处理电子邮件,但有一天这一切都停止了,现在函数返回false,但完全没有错误.
该网站位于共享主机上.当被问到这个时,他们建议我使用smtp relay xx.xxx.x.xxx
纠正我,如果我错了,但mail()函数没有提供这方面的规定呢?肯定是由HOST机器正确配置它的继电器?
我的问题是:这看起来像主机配置错误,还是我的代码?以下是我使用的邮件代码示例:
$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;
Run Code Online (Sandbox Code Playgroud)
非常感谢,西蒙
@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);
Run Code Online (Sandbox Code Playgroud)
请问这意味着我需要改变set_error_handler("customError", E_ALL);来set_error_handler("customError", -1);?
Cha*_*les 18
mail()函数返回false,但没有错误
欢迎来到PHP!
这看起来像主机配置错误,还是我的代码?
谁知道? mail()是一个黑盒子,当出现问题时,你将找不到有用的信息.
当被问到这个问题时,他们建议我使用smtp relay ...
的确,你可能应该.仔细看看SwiftMailer,这是一个优秀,全面,现代的PHP邮件库,可以直接与该SMTP服务器通信.它擅长构建MIME消息,就像你似乎在上面拼凑起来的那样.
其他受欢迎的选项包括PEAR的Mail,Zend Framework的Zend_Mail和经典的经典PHPMailer.
| 归档时间: |
|
| 查看次数: |
19298 次 |
| 最近记录: |