Krok po kroku: Najpierw znajdź plik, w którym pojawia się komunikat o błędzie. Do wyszukiwania plików używam Notepad ++ i polecenia CTRL+ F. Dobrym pomysłem jest wyszukiwanie tylko kilku pierwszych słów komunikatu o błędzie, ponieważ niektóre komunikaty o błędach są połączone z różnymi komunikatami.
Twój komunikat o błędzie pojawia się wp-login.php
i święte szczęście, tylko tam. Zobaczmy więc, dlaczego ten błąd może wystąpić.
if ( $message && !wp_mail($user_email, $title, $message) )
Są dwa warunki. $message
muszą być prawdziwe (nie pusty ciąg, nie fałsz, nie zero itp.). I wp_mail()
nie powinien zwracać fałszu.
Jeden wiersz powyżej zawiera filtr $message = apply_filters('retrieve_password_message', $message, $key);
, więc możliwe jest, że wtyczka (lub motyw) użyje tego filtra i zwróci wartość, która nie jest prawdziwa (pusty ciąg, fałsz, zero, itd.).
Ale o wiele łatwiej jest sprawdzić, czy wp_mail()
działa, czy nie. Napisz małą wtyczkę, aby wysłać do siebie wiadomość testową:
<?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 );
}
(To jest kod PHP5.3. Jeśli korzystasz z PHP5.2, usuń elementy przestrzeni nazw)
Wtyczka powinna wysłać testmail natychmiast po aktywacji. Jeśli nie, wywołanie niektórych stron zaplecza (np. Pulpit nawigacyjny) powinno to zrobić.
Jeśli testmail nie dotrze, prawdopodobnie masz problem z wp_mail()
. Włącz więc debugowanie:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
Umieść ten kod w swoim wp-config.php
i ponów próbę wysłania sobie testmaila. Teraz powinieneś dostać kilka komunikatów o błędach, które również powinny się zalogować wp-content/debug.log
(dziennik debugowania może się bardzo powiększyć, jeśli więcej błędów jest spowodowanych przez wtyczki i / lub motywy).
W tym momencie masz dobre informacje, jeśli się wp_mail()
nie powiedzie, a jeśli tak, to dlaczego. Jeśli wp_mail()
działa poprawnie i przyszedł testmail, wróć na górę i dowiedz się, dlaczego $message
to nieprawda.
Jeśli masz problemy wp_mail()
, pamiętaj, że wp_mail()
nie używa mail()
funkcji PHP . WordPress korzysta z klasy PHP ( PHPMailer ). Może potrzebujesz wtyczki, aby korzystać z SMTP zamiast sendmaila. Lub problem znajduje się w innym miejscu. Nie wiemy Musisz to zbadać.