2026年5月20日
2026年5月20日
WordPressのメールが迷惑メールに分類される場合の対処法
はじめに
WordPressから送信したパスワードリセットメールや通知メールが迷惑メールフォルダに入ってしまう問題は非常によく起こります。原因の多くはメール認証設定(SPF・DKIM・DMARC)の不備とSMTP未設定です。
症状・原因
- パスワードリセットメールが迷惑メールに入る
- お問い合わせフォームの自動返信が届かない
- Gmailに「このメッセージは未認証です」と表示される
主な原因:
1. PHP mail() 関数でサーバー直送(認証なし)
2. SPFレコードが設定されていない
3. DKIMレコードが設定されていない
4. FromアドレスがSPFレコードと不一致
解決手順
ステップ1:SMTPを設定する(最優先)
// functions.php — SMTPに切り替え
add_action('phpmailer_init', function(PHPMailer\PHPMailer\PHPMailer $phpmailer) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.your-provider.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = defined('SMTP_USER') ? SMTP_USER : '';
$phpmailer->Password = defined('SMTP_PASS') ? SMTP_PASS : '';
$phpmailer->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
});
ステップ2:SPFレコードを設定する
ドメインのDNS管理画面でTXTレコードを追加:
# example.com の SPFレコード
example.com TXT "v=spf1 include:your-smtp-provider.com ~all"
# 複数のSMTPプロバイダーを使う場合
example.com TXT "v=spf1 include:sendgrid.net include:mailgun.org ~all"
ステップ3:DMARCレコードを設定する
# DMARCレコード(まずはpolicy=noneで監視から開始)
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"
# 問題がなければ quarantine または reject に変更
_dmarc.example.com TXT "v=DMARC1; p=quarantine; pct=100"
ステップ4:Fromアドレスをドメインと一致させる
// functions.php — FromアドレスをSPFドメインと一致させる
add_filter('wp_mail_from', fn() => 'noreply@example.com');
add_filter('wp_mail_from_name', fn() => get_bloginfo('name'));
ステップ5:設定を検証する
# WP-CLIでテストメール送信
wp eval "wp_mail('yourtest@gmail.com', '迷惑メールテスト', 'このメールは迷惑メールフォルダに入りましたか?');"
無料ツールで確認:
- mail-tester.com — スパムスコアを10点満点で評価
- MXToolbox — SPF/DKIM/DMARCレコードを検証
注意事項
- SPFレコードは1ドメインにつき1件のみ有効です。複数のSMTPプロバイダーを使う場合は
include:を1つのレコードにまとめてください - DMARCは最初から
p=rejectにすると正規のメールまでブロックされる可能性があります。p=noneから始めてレポートを確認してください - DKIMレコードの設定方法はSMTPプロバイダーによって異なります(SendGrid、Mailgunは各ダッシュボードで確認)
まとめ
WordPressのメールが迷惑メールに入る問題は、SMTPの設定 + SPF/DKIM/DMARCレコードの3点を整備することで大幅に改善します。mail-tester.comでスコアを確認しながら設定を最適化してください。