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点を整備することで大部分の問題が解決します。