Passo dopo passo: trova prima il file in cui appare il messaggio di errore. Uso Notepad ++ e il comando CTRL+ Fper cercare nei file. È una buona idea cercare solo le prime parole del messaggio di errore, poiché alcuni messaggi di errore sono combinati con messaggi diversi.
Il tuo messaggio di errore appare wp-login.php
e buona fortuna, solo lì. Quindi diamo un'occhiata al motivo per cui questo errore potrebbe verificarsi.
if ( $message && !wp_mail($user_email, $title, $message) )
Vi sono due condizioni. $message
deve essere vero (non una stringa vuota, non falsa, non nulla, ecc.). E wp_mail()
non dovrebbe restituire false.
Una riga sopra, c'è un filtro $message = apply_filters('retrieve_password_message', $message, $key);
, quindi è possibile che un plugin (o tema) usi questo filtro e restituisca un valore che non è vero (stringa vuota, falso, null, ecc.).
Ma è molto più facile controllare se wp_mail()
funziona o no. Scrivi un piccolo plug-in per inviare una mail di prova a te stesso:
<?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 );
}
(Questo è il codice PHP5.3. Se stai eseguendo PHP5.2, rimuovi le cose dello spazio dei nomi)
Il plugin dovrebbe inviare un testmail immediatamente dopo l'attivazione. In caso contrario, chiamare alcune pagine di back-end (ad esempio dashboard) dovrebbe farlo.
Se testmail non arriva, allora probabilmente hai un problema con wp_mail()
. Quindi attiva il debug:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
Inserisci questo codice nel tuo wp-config.php
e riprova inviandoti un testmail. Ora dovresti ricevere alcuni messaggi di errore e anche loro dovrebbero essere registrati wp-content/debug.log
(il registro di debug può diventare molto grande se ci sono più errori causati da plugin e / o temi).
A questo punto, hai buone informazioni se wp_mail()
fallisce e, in tal caso, perché. Se wp_mail()
funziona correttamente e testmail è arrivato, torna all'inizio e scopri perché $message
non è vero.
In caso di problemi wp_mail()
, tieni presente che wp_mail()
non utilizza la mail()
funzione PHP . WordPress utilizza una classe PHP ( PHPMailer ). Forse hai solo bisogno di un plugin per usare SMTP invece di sendmail. O il problema si trova in un altro posto. Non lo sappiamo. Devi investigare.