Documentation
Contact Form 7 で自動返信メールを送る方法|Mail(2)設定と高度な自動返信
Contact Form 7(CF7)で問い合わせ送信者へ自動返信メール(サンクスメール)を送る方法を解説。標準のMail(2)を使う無料の設定手順、functions.phpでの自前実装、条件分岐など高度な自動返信をPro版で行う方法を、比較表付きで紹介します。
Contact Form 7(CF7)で問い合わせを受けたら、送信者にも「受け付けました」という自動返信メール(サンクスメール)を返したい——これはよくある要望です。
実はCF7には「メール(2)」という2通目のメール機能があり、これを使えば追加プラグインなしでも基本的な自動返信を送れます。
この記事では、CF7標準のメール(2)で無料の自動返信を送る設定手順、functions.php での自前実装、そして条件分岐など高度な自動返信をPro版で行う方法を、それぞれ解説して比較します。
なぜ自動返信メールが必要なのか
問い合わせ直後に自動返信が届くと、送信者は「ちゃんと送れた」と安心できます。
逆に何の反応もないと、送れたか不安になって再送したり、他社にも問い合わせたりと、機会損失につながります。
受付確認の一次対応を自動化しておくことは、問い合わせフォームの取りこぼしを防ぐうえで欠かせません。
CF7は送信時に管理者宛メールを1通送るのが基本ですが、設定を足せば送信者宛の自動返信も同時に送れます。
方法1:設定だけで自動返信を送る(おすすめ)
コードを書かず、WordPress管理画面の設定だけで自動返信を送れます。
まずは無料のCF7標準機能で土台を作り、条件分岐など踏み込んだ自動化が必要になったらPro版で補うのが無駄のない進め方です。
CF7標準のメール(2)で基本の自動返信(無料)
CF7の「メール(2)」は、送信時に2通目のメールを送るための標準機能です。
宛先を送信者のメール項目にすれば、そのまま自動返信になります。
- メール(2)を有効化:対象フォームの編集画面で「メール」タブを開き、「メール(2)」のチェックをオンにします。
- 宛先を送信者にする:メール(2)の「送信先」に、フォームのメール項目(例:
[your-email])を指定します。 - 差出人を設定する:「送信元」に自社の送信可能なアドレスを設定します。差出人ドメインはサイトのドメインに合わせると到達性が安定します。
- 文面を作成する:件名と本文に
[your-name]などの差し込みタグを使い、受付確認の文面を作成します。 - テスト送信で確認:フォームを送信し、送信者アドレスに自動返信が届くか、差し込み項目が正しく表示されるかを確認します。
この方法は無料で、1フォームに1通の定型的な受付確認メールを送るには十分です。
条件分岐など高度な自動返信(Pro)
「資料請求なら資料 URL を添えて返す」「サポート依頼なら別の案内文にする」といった、項目の値に応じて文面を出し分ける自動返信は、CF7標準のメール(2)だけでは組めません。
こうした条件分岐を伴う高度な自動返信は、Frontierline Forms Pro版のメール自動返信を使えば、functions.php を触らずに設定画面から実現できます。
複数フォームの自動返信を一元管理したい場合にも向いています。
方法2:functions.phpで自前実装する(上級者向け)
CF7標準のメール(2)で足りない独自ロジックを、コードで組むこともできます。
CF7の wpcf7_mail_sent フックで送信内容を受け取り、wp_mail() で送信者へ自動返信を送ります。
add_action('wpcf7_mail_sent', function ($contact_form) {
$submission = WPCF7_Submission::get_instance();
$data = $submission ? $submission->get_posted_data() : [];
$to = $data['your-email'] ?? '';
if (! $to) {
return;
}
$subject = 'お問い合わせありがとうございます';
$body = ($data['your-name'] ?? '') . " 様\n\n"
. "お問い合わせを受け付けました。担当者より折り返しご連絡いたします。";
$headers = ['From: Example <info@example.com>'];
wp_mail($to, $subject, $body, $headers);
});
フォーム項目名(your-email・your-name など)は、実際のフォーム定義に合わせて差し替えます。
条件で文面を変えたい場合は、$data の値に応じて $body を組み立てます。
ただし、次の点でつまずきやすいです。
- フォームごとにコードが増える:問い合わせ・資料請求・採用でフォームが分かれると、
$contact_form->id()で分岐するコードが膨らみます。 - 項目名の管理が属人化する:フォームを修正するたびにコード側の項目名も直す必要があり、ズレると自動返信が空欄になります。
- 保守がテーマに紐づく:
functions.phpはテーマ依存になり、テーマ変更や引き継ぎで失われるリスクがあります。
1〜2フォームなら自前でも回りますが、案件が増えるほど設定で完結する方法1が現実的です。
メール(2)・Pro・自前実装の比較
自動返信を実現する3つの方法を、実務で気になる観点で比べます。
| 観点 | CF7標準 メール(2) | Frontierline Forms Pro | functions.php 自前実装 |
|---|---|---|---|
| 設定の手軽さ | 管理画面で完結 | 管理画面で完結 | コードが必要 |
| 条件による文面の出し分け | ✕(1フォーム1通) | ○ | ○(自分で実装) |
| コードの要否 | 不要 | 不要 | 必要 |
| 複数フォームの一元管理 | フォーム個別 | 一元管理 | 個別にコード |
| 保守性 | フォーム定義に内包 | 設定に一元化 | テーマ依存で属人化 |
| 費用 | 無料 | Pro | 無料(ただし工数) |
まずは無料のメール(2)で受付確認メールを用意し、条件分岐や一元管理が必要になった段階でPro版へ広げるのが無駄のない選び方です。
自動返信が届かないときは
設定したのに自動返信が届かない場合、多くは送信内容の問題ではなくメールの到達性が原因です。
差出人ドメインとサーバーのメール認証(SPF/DKIM)の不一致や、受信側の迷惑メール判定でブロックされているケースが典型です。
まず、送信自体が発生しているかを切り分けましょう。
送信ログのDB保存を有効にしておけば、フォーム送信が記録されているかを管理画面から確認でき、「送れていない」のか「送れているが届いていない」のかを判別できます。
到達性の詳しい切り分けは、メールが届かないときの対処で解説しています。
まとめ
CF7で自動返信メールを送るには、標準のメール(2)を使う無料の方法、functions.php で自前実装する方法、Pro版のメール自動返信で条件分岐まで設定する方法があります。
定型的な受付確認メールなら無料のメール(2)で十分ですが、項目の値に応じた文面の出し分けや複数フォームの一元管理が必要なら、コードを書かずに設定で完結する方法が現実的です。
無料・Pro・自前実装のどれを選ぶかをケース別に整理した Contact Form 7 の自動返信メールの選び方 も参考にしてください。
まずは無料版を試すなら、WordPress管理画面の「プラグイン → 新規追加」で「Frontierline Forms」を検索してインストールしてください。
確認画面・完了画面・送信ログのDB保存・CSV出力も無料で使えます。
機能の全体像は機能一覧ガイド、条件分岐を伴う高度な自動返信を含むPro版の詳細は製品ページから確認できます。
Frontierline Forms
この設定、管理画面のチェックだけで完了。
通知・送信ログ・CSV出力・マルチステップを、コードを書かず設定画面だけで実装。制作会社向けの5サイト/無制限ライセンスなら、複数案件のフォーム保守をまとめて巻き取れる。決済と同時にライセンスキーを即時発行。