Schritt für Schritt: Suchen Sie zuerst die Datei, in der die Fehlermeldung angezeigt wird. Ich benutze Notepad ++ und den Befehl CTRL+ F, um in Dateien zu suchen. Es ist eine gute Idee, nur die ersten paar Wörter der Fehlermeldung zu durchsuchen, da einige Fehlermeldungen aus verschiedenen Meldungen kombiniert werden.
Ihre Fehlermeldung erscheint in wp-login.php
und heiliges Glück, nur dort. Schauen wir uns also an, warum dieser Fehler auftreten kann.
if ( $message && !wp_mail($user_email, $title, $message) )
Es gibt zwei Bedingungen. $message
müssen wahr sein (keine leere Zeichenfolge, nicht falsch, nicht null usw.). Und wp_mail()
sollte nicht falsch zurückgeben.
In einer Zeile darüber befindet sich ein Filter $message = apply_filters('retrieve_password_message', $message, $key);
. Daher ist es möglich, dass ein Plugin (oder Theme) diesen Filter verwendet und einen Wert zurückgibt, der nicht wahr ist (leere Zeichenfolge, falsch, null usw.).
Es ist jedoch viel einfacher zu überprüfen, ob wp_mail()
es funktioniert oder nicht. Schreiben Sie ein kleines Plugin, um eine Testmail an sich selbst zu senden:
<?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 );
}
(Dies ist PHP5.3-Code. Wenn Sie PHP5.2 ausführen, entfernen Sie die Namespace-Elemente.)
Das Plugin sollte sofort nach der Aktivierung eine Testmail senden. Wenn nicht, sollten einige Backend-Seiten (z. B. Dashboard) aufgerufen werden.
Wenn die Testmail nicht ankommt, haben Sie wahrscheinlich ein Problem mit wp_mail()
. Aktivieren Sie also das Debuggen:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', true );
@ini_set( 'display_errors',1 );
wp-config.php
Geben Sie diesen Code in Ihre ein und versuchen Sie erneut, sich eine Testmail zu senden. Jetzt sollten Sie einige Fehlermeldungen erhalten und diese sollten auch angemeldet sein wp-content/debug.log
(Das Debug-Protokoll kann sehr groß werden, wenn mehr Fehler durch Plugins und / oder Themes verursacht werden).
Zu diesem Zeitpunkt haben Sie gute Informationen erhalten, wenn dies wp_mail()
fehlschlägt und wenn ja, warum. Wenn es wp_mail()
richtig funktioniert und die Testmail eingetroffen ist, gehen Sie zurück nach oben und finden Sie heraus, warum dies $message
nicht der Fall ist.
Wenn Sie Probleme mit haben wp_mail()
, denken Sie daran, dass wp_mail()
die PHP- mail()
Funktion nicht verwendet wird . WordPress verwendet eine PHP-Klasse ( PHPMailer ). Möglicherweise benötigen Sie nur ein Plugin, um SMTP anstelle von sendmail zu verwenden. Oder das Problem liegt an einem anderen Ort. Wir wissen es nicht. Du musst nachforschen.