ステップバイステップ:まず、エラーメッセージが表示されるファイルを見つけます。Notepad ++とCTRL+ Fコマンドを使用してファイルを検索します。一部のエラーメッセージは異なるメッセージを組み合わせているため、エラーメッセージの最初の数語のみを検索することをお勧めします。
あなたのエラーメッセージwp-login.php
はそこにのみ、幸運に現れます。このエラーが発生する理由を見てみましょう。
if ( $message && !wp_mail($user_email, $title, $message) )
2つの条件があります。$message
trueでなければなりません(空の文字列、false、nullなどではありません)。そして、wp_mail()
falseを返すべきではありません。
上記の1行にはフィルタがあります$message = apply_filters('retrieve_password_message', $message, $key);
。そのため、プラグイン(またはテーマ)がこのフィルタを使用し、trueでない値(空の文字列、false、nullなど)を返す可能性があります。
しかし、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()
、正しく仕事とtestmailが到着し、トップに戻って、理由を見つける$message
真実ではありません。
で問題が発生した場合は、がPHP 関数を使用しないwp_mail()
ことに注意してください。WordPressはPHPクラス(PHPMailer)を使用します。sendmailの代わりにSMTPを使用するためのプラグインが必要なだけかもしれません。または、問題は別の場所にあります。わかりません。調査する必要があります。wp_mail()
mail()