2026年5月20日

2026年5月20日

WordPressの確認メールが届かない場合の対処法

はじめに

WordPressのユーザー登録確認メール、パスワードリセットメール、管理者メールアドレス変更確認メールが届かない問題はよく発生します。原因の多くはSMTP未設定、SPF/DKIM不備、またはFromアドレスの問題です。

症状別の原因と解決法

症状1:ユーザー登録確認メールが届かない

# まずメール送信自体が機能しているかテスト
wp eval "
\$result = wp_mail(
    'yourtest@gmail.com',
    'WordPressメールテスト',
    '送信テストです。'
);
echo \$result ? '送信成功' : '送信失敗';
"

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

# 未確認の新しい管理者メールアドレスを確認
wp option get new_admin_email

# 確認をスキップして直接変更(緊急時)
wp option delete new_admin_email
wp option update admin_email 'new@example.com'

症状3:wp_mail()が失敗している

// functions.php — wp_mail エラーを記録
add_action('wp_mail_failed', function(WP_Error $error) {
    error_log('wp_mail failed: ' . $error->get_error_message());
    error_log('wp_mail data: ' . print_r($error->get_error_data(), true));
});

ステップ1:SMTPを設定する

wp plugin install wp-mail-smtp --activate

管理画面 → WP Mail SMTP → 設定 でSMTPサーバーを設定し、「テストメール送信」で確認。

ステップ2:Fromアドレスを正しく設定する

// functions.php — 送信元を実在するアドレスに変更
add_filter('wp_mail_from',      fn() => 'noreply@yourdomain.com');
add_filter('wp_mail_from_name', fn() => get_bloginfo('name'));

ステップ3:SPFレコードを確認する

# 送信元ドメインのSPFレコードを確認
# nslookup -type=TXT yourdomain.com
# または MXToolbox で確認

# 例:SendGrid経由で送信している場合
yourdomain.com  TXT  "v=spf1 include:sendgrid.net ~all"

ステップ4:メール送信をログに記録して確認する

// functions.php — 全wp_mail送信をログに記録(デバッグ用)
add_filter('wp_mail', function($args) {
    error_log(sprintf(
        'wp_mail: to=%s subject=%s',
        is_array($args['to']) ? implode(',', $args['to']) : $args['to'],
        $args['subject']
    ));
    return $args;
});

チェックリスト

1. SMTPプラグインでテストメール送信 → 届くか確認

2. テストが失敗 → wp_mail_failed フックでエラーログを確認

3. テストは成功するが確認メールのみ届かない → Fromアドレスがブロックされていないか確認

4. Gmailの迷惑メールフォルダを確認

5. SPF/DKIMレコードを確認

注意事項

  • サーバーによっては mail() 関数が無効化されています。必ずSMTPを設定してください
  • 受信側のメールサーバーによっては一時的にブロックされることがあります。送信元IPの評価(Sender Score)を確認してください

まとめ

確認メールが届かない場合は、まず wp eval "wp_mail(...)" でメール送信自体のテストを行い、問題を切り分けてください。SMTP設定 → Fromアドレス設定 → SPFレコード設定の3点を整備することで大部分の問題が解決します。

お気軽にご相談ください

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