2026年5月20日

2026年5月20日

Contact Form 7でメールが届かない場合の解決方法

はじめに

Contact Form 7でフォームを送信しても「メールが届かない」という問題は非常によくあります。WordPressのデフォルトメール送信機能がスパム判定されることが最大の原因で、SMTPを設定することで大半のケースが解決します。

症状・原因

  • フォーム送信後に「送信しました」と表示されるがメールが届かない
  • 迷惑メールフォルダに入っている
  • 送信元メールアドレスがサイトドメインと異なる
  • CF7の送信先メールアドレスが間違っている

解決手順

ステップ1:CF7のメール設定を確認する

お問い合わせ → フォームを選択 → 「メール」タブ
- 送信先: admin@example.com(実在するアドレス)
- 送信元: [your-name] <wordpress@example.com>
  ※ 送信元はサイトのドメインと同じドメインを使うこと
- 返信先: [your-email](フォームのメールアドレスフィールド)
- メール本文: [your-name], [your-email], [your-message] を含むか確認

ステップ2:SMTPプラグインを設定する

# FluentSMTPをインストール(最推奨)
wp plugin install fluent-smtp --activate

# または WP Mail SMTP
wp plugin install wp-mail-smtp --activate

ステップ3:phpmailer_initで直接SMTP設定する

// functions.php
add_action('phpmailer_init', function(PHPMailer\PHPMailer\PHPMailer $phpmailer) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.sendgrid.net';
    $phpmailer->Port       = 587;
    $phpmailer->SMTPAuth   = true;
    $phpmailer->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
    $phpmailer->Username   = 'apikey';
    $phpmailer->Password   = defined('SENDGRID_API_KEY') ? SENDGRID_API_KEY : '';
});

ステップ4:CF7のメール送信失敗をキャッチする

// functions.php — CF7のメール送信失敗をログに記録
add_action('wpcf7_mail_failed', function(WPCF7_ContactForm $form) {
    error_log(sprintf(
        'CF7 mail failed: form="%s" id=%d',
        $form->title(),
        $form->id()
    ));
});

// wp_mail_failed でSMTPエラーを詳細記録
add_action('wp_mail_failed', function(WP_Error $error) {
    error_log('wp_mail error: ' . $error->get_error_message());
    error_log('wp_mail data: ' . print_r($error->get_error_data(), true));
});

ステップ5:テスト送信で動作確認する

# WP-CLIでテストメールを送信
wp eval "wp_mail('your@email.com', 'CF7テスト', 'SMTP設定確認');"

# CF7のデバッグログを有効化
wp eval "add_filter('wpcf7_debug', '__return_true');"

注意事項

  • CF7の「送信元」に wordpress@yourdomain.com のようにサーバーに存在しないアドレスを使うとスパム判定されやすくなります
  • Gmail の SMTP を使う場合はアプリパスワードが必要です(2段階認証を有効にした後に生成)
  • SPF・DKIM・DMARC の DNS 設定を行うとメール到達率が大幅に改善します

まとめ

CF7のメール未達は SMTP プラグイン(FluentSMTP 推奨)の導入で解決するケースがほとんどです。wpcf7_mail_failedwp_mail_failed フックでエラーをログに記録し、原因を特定してください。

お気軽にご相談ください

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