逐步:首先查找出现错误消息的文件。我使用记事本++和CTRL+F命令来搜索文件。最好只搜索错误消息的前几个单词,因为一些错误消息是由不同消息组合而成的。
您的错误消息出现在wp-login.php
祝你好运,就在那里。让我们看看为什么会发生这种错误。
if ( $message && !wp_mail($user_email, $title, $message) )
有两个条件。
$message
必须为true(非空字符串、非false、非null等)。和
wp_mail()
不应返回false。
上面一行是过滤器$message = apply_filters(\'retrieve_password_message\', $message, $key);
, 因此,插件(或主题)可能会使用此过滤器并返回一个非true的值(空字符串、false、null等)。
但检查是否wp_mail()
是否有效。编写一个小插件,向自己发送测试邮件:
<?php
/**
* Plugin Name: Stackexchange Testplugin
* Plugin URI: http://yoda.neun12.de
* Description: Send me a test email
* Version: 0.1
* Author: Ralf Albert
* Author URI: http://yoda.neun12.de
* Text Domain:
* Domain Path:
* Network:
* License: GPLv3
*/
namespace WordPressStackexchange;
add_action( \'init\', __NAMESPACE__ . \'\\plugin_init\' );
function plugin_init(){
$to = \'[email protected]\';
$subject = \'Testemail\';
$message = \'FooBarBaz Testmail is working\';
wp_mail( $to, $subject, $message );
}
(这是PHP5.3代码。如果您正在运行PHP5.2,请删除名称空间内容)
插件应该在激活后立即发送测试邮件。如果没有,则调用一些后端页面(如仪表板)即可。
如果测试邮件没有到达,那么您可能对wp_mail()
. 因此,启用调试:
define( \'WP_DEBUG\', true );
define( \'WP_DEBUG_LOG\', true );
define( \'WP_DEBUG_DISPLAY\', true );
@ini_set( \'display_errors\',1 );
将此代码放入
wp-config.php
然后重试向自己发送测试邮件。现在,您应该会收到一些错误消息,并且应该登录到
wp-content/debug.log
(如果插件和/或主题导致更多错误,调试日志可能会变得非常大)。
在这一点上,如果wp_mail()
失败,如果是,为什么。如果wp_mail()
工作正常,测试邮件到达,返回顶部并找出原因$message
不是真的。
如果您对wp_mail()
, 所以请记住wp_mail()
不使用PHPsmail()
作用WordPress使用PHP类(PHPMailer). 也许你只是需要a plugin to use SMTP 而不是sendmail。或者问题位于其他位置。我们不知道。你必须调查。