Шаг за шагом: сначала найдите файл, в котором появляется сообщение об ошибке. Я использую Notepad ++ и команду CTRL+ Fдля поиска в файлах. Рекомендуется искать только первые несколько слов сообщения об ошибке, поскольку некоторые сообщения об ошибках объединяются из разных сообщений.
Ваше сообщение об ошибке появляется в wp-login.php
и святая удача, только там. Итак, давайте посмотрим, почему эта ошибка может возникнуть.
if ( $message && !wp_mail($user_email, $title, $message) )
Есть два условия. $message
должно быть истинным (не пустой строкой, не ложным, не нулевым и т. д.). И wp_mail()
не должен возвращать false.
На одну строку выше есть фильтр $message = apply_filters('retrieve_password_message', $message, $key);
, поэтому возможно, что плагин (или тема) использует этот фильтр и возвращает значение, которое не является истиной (пустая строка, ложь, ноль и т. Д.).
Но гораздо проще проверить, 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 = 'your-email-adress@some-domain.tld';
$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()
не использует mail()
функцию PHP . WordPress использует класс PHP ( PHPMailer ). Может быть, вам просто нужен плагин для использования SMTP вместо sendmail. Или проблема находится в другом месте. Мы не знаем Вы должны расследовать.