2026年5月20日

2026年5月20日

WordPress の確認メールが届かないときの対処法|送信テスト・From・SPF の順に確認

WordPress の確認メール(ユーザー登録、パスワードリセット、管理者メールアドレスの変更など)が届かないときは、送信できているか → 送信元アドレスが受信側に受け入れられるか → 迷惑メールに入っていないかの順に確認します。原因の多くは、サーバーからそのまま送ったメールが、送信元ドメインの SPF や DKIM の確認に通らず、受信側で拒否されるか迷惑メールに振り分けられることです。

この記事では、どこで止まっているかを切り分ける手順と、メールが届かないままでも登録やアドレス変更を進める方法を説明します。

WordPress が送る主な確認メール

メール 送られるとき 宛先
新規ユーザーの通知(パスワード設定用のリンク付き) ユーザー登録、管理者によるユーザー追加 登録したユーザー(管理者にも通知)
パスワードリセット ログイン画面の「パスワードをお忘れですか ?」 そのユーザー
管理者メールアドレスの変更確認 設定 → 一般 で管理者メールアドレスを変えたとき 新しいアドレス
ユーザーのメールアドレス変更確認 プロフィールでメールアドレスを変えたとき 新しいアドレス

どれも wp_mail() という同じ関数で送られます。1種類だけ届かないのか、すべて届かないのかを先に確かめると、原因を絞りやすくなります。

手順 1: メールを送れているか確かめる

WP-CLI が使える場合は、自分の受信できるアドレスへテストメールを送ります。

wp eval 'var_dump( wp_mail( "you@example.net", "WordPress送信テスト", "テストです。" ) );'
  • bool(true) は、WordPress がメールの送信処理を終えたという意味です。相手に届いたことまでは意味しません。届かなければ手順 3 以降へ進みます。
  • bool(false) は、WordPress の段階で送信に失敗しています。手順 2 でエラーの内容を確かめます。

WP-CLI が使えない場合は、ログイン画面からパスワードリセットを申し込むと、同じ確認ができます。

手順 2: 送信エラーを記録する

wp_mail() が失敗すると wp_mail_failed アクションが呼ばれます。一時的に次のコードを子テーマの functions.php か mu-plugin に入れ、エラーの内容をログに残します。

<?php
// wp_mail の送信失敗を PHP のエラーログに書く(調査が終わったら外す)
add_action( 'wp_mail_failed', function ( WP_Error $error ) {
    error_log( 'wp_mail failed: ' . $error->get_error_message() );
} );

ログは、サーバーの PHP エラーログか、wp-config.php で WP_DEBUG と WP_DEBUG_LOG を true にしたときの wp-content/debug.log に出ます。よくあるメッセージと原因は次のとおりです。

メッセージの例 主な原因
Could not instantiate mail function. サーバーの mail()(sendmail)が使えない、または無効にされている
SMTP Error: Could not connect to SMTP host. SMTP サーバーのホスト名・ポート・暗号化の指定が違う、送信ポートが塞がれている
Could not execute: で始まるもの サーバーの sendmail のパスが無い、または実行できない
SMTP Error: Could not authenticate. SMTP のユーザー名・パスワードが違う
Invalid address: で始まり (From) を含むもの 送信元アドレスの形式がおかしい

手順 3: 送信元アドレス(From)を確認する

送信元を指定しない場合、WordPress は wordpress@ に、サイトのドメイン(先頭の www. を除いたもの)を付けたアドレスを From にします。たとえばサイトが https://www.example.com なら wordpress@example.com です。

このアドレスが実在しなかったり、送信に使っているサーバーがそのドメインの SPF に含まれていなかったりすると、受信側で拒否されたり迷惑メールに入れられたりします。Gmail などの大手は、送信元ドメインの認証(SPF か DKIM)を求めています。

対策は2つあります。

  1. SMTP プラグインで、実在するメールアカウントから送る(おすすめ)。メールサーバーや送信サービスに認証して送るため、SPF・DKIM の設定がそのドメインのメールと同じになります。
  2. 送信元アドレスだけを変える。サーバーからそのまま送る構成で、そのドメインの SPF にサーバーが含まれている場合に使います。

送信元アドレスを変えるコードは次のとおりです。noreply@example.com は自分のドメインのアドレスに置き換えます。

<?php
// 送信元を自分のドメインのアドレスにする
add_filter( 'wp_mail_from', function () {
    return 'noreply@example.com';
} );

// 送信者名をサイト名にする
add_filter( 'wp_mail_from_name', function () {
    return get_bloginfo( 'name' );
} );

SMTP プラグインで送る場合は、プラグインの設定で送信元を決めるため、このコードは入れません(両方あると、どちらが効いているか分かりにくくなります)。

SMTP プラグインで送る

WP Mail SMTP などの SMTP プラグインを入れ、メールサーバーのホスト名・ポート(通常は 587 番の STARTTLS か 465 番の SSL/TLS)・ユーザー名・パスワードを設定します。WP-CLI なら次のコマンドで入れられます。

wp plugin install wp-mail-smtp --activate

設定したら、プラグインのテストメール機能(WP Mail SMTP では Tools の Email Test)で送信し、届くか、エラーが出るかを確かめます。設定の詳細は WordPress のメールを SMTP で送る設定 にまとめています。

手順 4: SPF・DKIM と受信側を確認する

テストメールが届いたら、受信したメールのヘッダー(Gmail なら「メッセージのソースを表示」)で Authentication-Results の行を見ます。spf=pass と dkim=pass になっていれば、送信元ドメインの認証には通っています。fail や none なら、送信元ドメインの DNS を確認します。

# SPF(v=spf1 で始まる TXT レコード)
dig +short TXT example.com

# DMARC
dig +short TXT _dmarc.example.com

SPF に、メールを送っているサーバーやサービスが含まれているかを確かめます。SMTP の送信サービスを使っている場合は、そのサービスの案内どおりに SPF と DKIM のレコードを追加します。

あわせて、受信側で次の点を確認します。

  • 迷惑メールのフォルダーに入っていないか。
  • 会社や学校のアドレスでは、受信側のフィルターで止められていないか(管理者にログを確認してもらう)。
  • 確認メールのリンクには有効期限があります。古いメールのリンクではなく、最後に届いたメールのリンクを使います。

メールが届かないままでも作業を進める方法

登録したユーザーにパスワード設定のメールが届かない

管理者が ユーザー → ユーザー一覧 で対象のユーザーにマウスを合わせ、「パスワードリセットを送信」で送り直せます。メール自体が届かない状態なら、管理者がユーザーの編集画面の「新しいパスワードを設定」でパスワードを決めて、別の方法で本人に伝えます。WP-CLI では、パスワードをコマンド履歴に残さないように入力を求める形で設定します。

wp user update 12 --prompt=user_pass

12 はユーザー ID です(wp user list で確認できます)。

管理者メールアドレスの変更確認が届かない

設定 → 一般 で管理者メールアドレスを変えると、新しいアドレスに確認メールが送られ、リンクを開くまでは元のアドレスのままです。確認待ちの値は new_admin_email と adminhash というオプションに入っています。確認メールを受け取れない場合は、WP-CLI で直接変えて、確認待ちの値を消します。

# 確認待ちの新しいアドレスを確認
wp option get new_admin_email

# 管理者メールアドレスを直接変え、確認待ちの値を消す
wp option update admin_email 'new@example.com'
wp option delete new_admin_email adminhash

直接変えると、新しいアドレスが受信できるかどうかは確かめられません。変更後に手順 1 のテストメールを新しいアドレスへ送り、届くことを確認します。安全な変え方は WordPress の管理者メールアドレスを安全に変更する方法 で説明しています。

確認の順番(まとめ)

  1. wp eval でテストメールを送り、true か false かを見る。
  2. false なら wp_mail_failed でエラーの内容を記録し、mail() が使えるか、SMTP の設定が正しいかを直す。
  3. true でも届かないなら、送信元アドレスとそのドメインの SPF・DKIM を確認する。SMTP プラグインで実在するアカウントから送ると解決しやすい。
  4. 受信側の迷惑メールフォルダーとフィルターを確認する。
  5. 急ぎの場合は、パスワードや管理者メールアドレスを管理画面や WP-CLI で直接設定して作業を進める。

関連記事

参考: wp_mail()(WordPress Developer Resources)、wp_mail_failed(WordPress Developer Resources)、メール送信者のガイドライン(Gmail ヘルプ)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲