我在Windows 8桌面上使用Apache 2.2.25和PHP 5.3.28.有一次当我恢复我的wordpress密码时,我收到了这个错误:
电子邮件无法发送.可能的原因:您的主机可能已禁用mail()函数.
我用谷歌搜索了如何启用mail()函数,发现我需要使用我的服务器配置邮件服务器.我下载了hMailServer,但它没有用...请帮我如何启用mail()函数?我必须下载哪个邮件服务器?
正如我在这里发布的:
这是一个非常烦人的错误消息,因为它可能是很多东西,并且它没有揭示实际错误(在代码的其他部分经常会被静音).
当wp_mail()函数返回false 时会出现此错误,如果phpmailer->Send()返回false或引发异常,则会发生此错误.
mail()功能中显示警告这些通常默认是静音的,不幸的是WordPress从未捕获它们.向他们展示,只需删除@从标志@mail(...中wp-includes/class-phpmailer.php的mailPassthru()功能:
if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
$rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header);
} else {
$rt = @mail($to, $this->encodeHeader($this->secureHeader($subject)), $body, $header, $params);
}
Run Code Online (Sandbox Code Playgroud)
wp_mail()在in 的底部添加一行/wp-includes/pluggable.php:
// 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;
}
Run Code Online (Sandbox Code Playgroud)它将转储引发异常的详细信息.不幸的是,它有时会包含这个无用的异常消息:" 无法实例化邮件功能 ".是的,感谢WordPress,这真的很有帮助.
通过查看异常,您可以找到错误的行号,并希望通过代码追溯它以找到真正的原因.
祝好运.希望WordPress在将来的某些时候改进电子邮件错误处理.