我在
Windows 8桌面上使用Apache 2.2.25和
PHP 5.3.28.有一次当我恢复我的wordpress密码时,我收到了这个错误:
The e-mail could not be sent. Possible reason: your host may have disabled the mail() function.
@H_403_4@我用Google搜索了如何启用mail()函数,发现我需要使用我的服务器配置邮件服务器.我下载了hMailServer,但它没有用…请帮我如何启用mail()函数?我必须下载哪个邮件服务器?
正如我
posted here:
这是一个非常恼人的错误消息,因为它可能是很多东西,并且它不会揭示实际错误(在代码的其他部分经常会出现静音).
当wp_mail()函数返回false时会出现此错误,如果PHPmailer-> Send()返回false或引发异常,则会发生此错误.
默认情况下这些通常是静音的,不幸的是wordpress从未捕获它们.要显示它们,只需从@mail中删除@符号(…在mailPassthru()函数中的wp-includes / class-PHPmailer.PHP中删除:
if (ini_get('safe_mode') || !($this->UseSendmailOptions)) { $rt = @mail($to,$this->encodeHeader($this->secureHeader($subject)),$body,$header); } else { $rt = @mail($to,$header,$params); }
如何寻找其他可能的原因:
>在/wp-includes/pluggable.PHP中的wp_mail()底部添加一行:
// Send! try { return $PHPmailer->Send(); } catch ( PHPmailerException $e ) { //------------- This next line is the one to add ------------------- if (WP_DEBUG) echo '<pre>' . esc_html(print_r($e,TRUE)) . '</pre>'; return false; }
>它将转储引发异常的完整详细信息.不幸的是,它有时会包含这个无用的异常消息:“无法实例化邮件功能”.是的,感谢wordpress,这真的很有帮助.
>通过查看异常,您可以找到错误的行号,并希望通过代码追溯它以找到真正的原因.