Étape par étape: recherchez d'abord le fichier dans lequel le message d'erreur apparaît. J'utilise Notepad ++ et la commande CTRL+ Fpour rechercher dans les fichiers. C'est une bonne idée de rechercher uniquement les premiers mots du message d'erreur, car certains messages d'erreur sont combinés de messages différents.
Votre message d'erreur apparaît dans wp-login.php
et sainte chance, seulement là. Voyons donc pourquoi cette erreur peut se produire.
if ( $message && !wp_mail($user_email, $title, $message) )
Il y a deux conditions. $message
doivent être vraies (pas une chaîne vide, pas fausse, pas nulle, etc.). Et wp_mail()
ne devrait pas retourner faux.
Une ligne au-dessus, il y a un filtre $message = apply_filters('retrieve_password_message', $message, $key);
, il est donc possible qu'un plugin (ou un thème) utilise ce filtre et retourne une valeur qui n'est pas vraie (chaîne vide, false, null, etc.).
Mais il est beaucoup plus facile de vérifier si cela wp_mail()
fonctionne ou non. Écrivez un petit plugin pour vous envoyer un mail de test:
<?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 );
}
(Ceci est du code PHP5.3. Si vous utilisez PHP5.2, supprimez les choses d'espace de noms)
Le plugin doit envoyer un testmail immédiatement après l'activation. Sinon, appeler certaines pages backend (par exemple, un tableau de bord) devrait le faire.
Si le testmail n'arrive pas, vous avez probablement un problème avec wp_mail()
. Activez donc le débogage:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
Mettez ce code dans votre wp-config.php
et réessayez de vous envoyer un mail de test. Maintenant, vous devriez obtenir des messages d'erreur et ils doivent également être connectés wp-content/debug.log
(le journal de débogage peut devenir très volumineux s'il y a plus d'erreurs causées par des plugins et / ou des thèmes).
À ce stade, vous avez obtenu de bonnes informations en cas d' wp_mail()
échec et si oui, pourquoi. Si cela wp_mail()
fonctionne correctement et que le testmail est arrivé, retournez en haut et découvrez pourquoi ce $message
n'est pas vrai.
Si vous rencontrez des problèmes wp_mail()
, n'oubliez pas que la fonction wp_mail()
PHP n'est pas utilisée mail()
. WordPress utilise une classe PHP ( PHPMailer ). Peut-être avez-vous juste besoin d' un plugin pour utiliser SMTP au lieu de sendmail. Ou le problème se situe à un autre endroit. Nous ne le savons pas. Vous devez enquêter.