Tips
お問い合わせフォームが届かない原因の特定方法
2026-01-12
この記事が解決する状況
| あなたの状況 | 読むべきセクション |
|---|---|
| フォーム送信完了になるが届かない | 原因の切り分け → 確認の順序 |
| 迷惑メールに入る | 確認4: SPF/DKIM設定 |
| 特定の相手にだけ届かない | 確認4: SPF/DKIM設定 |
| Xserver / さくら / ConoHaを使っている | ホスティング別の注意点 |
| SMTPプラグインを入れたが動かない | トラブルシューティング |
「送信完了」はフォームの処理が終わっただけ。メールが届いた保証ではない。
よくある失敗
「Contact Form 7で送信完了になるのに、メールが届かない」
フォーム側は正常。でもメールがどこかで消えている。原因は複数あり、順番に潰さないと特定できない。
原因の切り分け
| 症状 | 最も多い原因 |
|---|---|
| 全く届かない | サーバーのメール送信機能が無効 |
| 迷惑メールに入る | SPF/DKIM未設定 |
| 特定ドメインだけ届かない | 受信側のフィルタ |
| 時々届かない | サーバーの送信制限 |
確認の順序
1. 迷惑メールフォルダを確認
2. 送信元アドレスを確認
3. サーバーのメール機能を確認
4. SPF/DKIMを確認
5. SMTPプラグインを検討
上から順に確認。1で解決すれば2以降は不要。
確認1: 迷惑メールフォルダ
最初に確認。意外とここで解決する。
Gmailの場合「すべてのメール」も確認。自動振り分けで見えない場所に入っていることがある。
確認2: 送信元アドレスの設定
よくある間違い
| 設定 | 問題 |
|---|---|
送信元が wordpress@サーバードメイン | 受信側で不審なメールと判定 |
| 送信元と返信先が別ドメイン | スパム判定されやすい |
| 存在しないアドレスを送信元に | 認証に失敗する |
Contact Form 7の場合
「メール」タブで確認:
送信元: info@example.com ← 実在するアドレス
送信先: admin@example.com
送信元はサイトと同じドメインの実在するアドレスにする。
確認3: サーバーのメール機能
共有サーバーではPHPのmail()関数が制限されていることがある。
確認方法
<?php
$result = mail('your@email.com', 'テスト', '本文');
var_dump($result); // false なら送信機能が無効
falseが返る場合、サーバー会社に確認するか、SMTPプラグインで外部送信に切り替える。
確認4: SPF/DKIM設定
メール認証が未設定だと、受信サーバーに拒否される。
メール認証の仕組み
送信サーバー → 受信サーバー
↓
「このメール、本当にexample.comから?」
↓
DNSのSPFレコードを確認
↓
許可されたサーバーからなら受信、そうでなければ拒否/迷惑メール
SPF・DKIM・DMARCの違い
| 認証方式 | 役割 | 設定場所 |
|---|---|---|
| SPF | 送信元サーバーの正当性を証明 | DNS TXTレコード |
| DKIM | メールに電子署名を付与 | DNS TXTレコード + メールサーバー |
| DMARC | SPF/DKIMの結果をどう扱うかのポリシー | DNS TXTレコード |
最低限SPFは設定する。 DKIMも設定するとより到達率が上がる。
SPFの確認
nslookup -type=txt example.com
以下のようなレコードがあればOK:
"v=spf1 include:_spf.google.com ~all"
ホスティング別の注意点
Xserver
| 項目 | 設定 |
|---|---|
| SPFレコード | v=spf1 include:spf.xserver.jp ~all |
| メール送信 | PHPのmail()は使用可能 |
| 送信制限 | 1時間あたり500通(共有サーバー) |
| DKIM | サーバーパネル → メール設定 → DKIM設定 |
| 注意点 | ドメイン追加時にメール認証を有効化 |
さくらサーバー
| 項目 | 設定 |
|---|---|
| SPFレコード | v=spf1 include:sakura.ne.jp ~all |
| メール送信 | PHPのmail()は使用可能 |
| 送信制限 | 明確な上限なし(大量送信は制限) |
| DKIM | コントロールパネル → ドメイン設定 |
| 注意点 | ドメイン設定でメール利用をONにする |
ConoHa WING
| 項目 | 設定 |
|---|---|
| SPFレコード | v=spf1 include:spf.conoha.jp ~all |
| メール送信 | PHPのmail()は使用可能 |
| 送信制限 | 1時間あたり1000通 |
| DKIM | コントロールパネル → メール管理 → メールセキュリティ |
| 注意点 | DKIM設定が初期状態でOFFの場合あり |
ロリポップ
| 項目 | 設定 |
|---|---|
| SPFレコード | v=spf1 include:_spf.lolipop.jp ~all |
| メール送信 | PHPのmail()は使用可能 |
| 送信制限 | プランにより異なる(ライト:100通/時) |
| DKIM | 自動設定(2023年以降のアカウント) |
| 注意点 | 他社と比べて迷惑メール判定されやすい傾向 |
対処: SMTPプラグインで外部送信
サーバーのメール機能に頼らず、GmailやSendGridなど外部サービス経由で送信する。
プラグイン比較
| プラグイン | 特徴 | おすすめ用途 |
|---|---|---|
| WP Mail SMTP | 定番、設定ウィザードあり | 初心者、確実に動かしたい |
| FluentSMTP | 無料で複数接続対応 | 複数サービス使い分け |
| Post SMTP | 送信ログが見やすい | トラブルシュート重視 |
Gmail SMTP設定例(WP Mail SMTP)
- Googleアカウントで「アプリパスワード」を生成
- WP Mail SMTPで以下を設定:
| 項目 | 値 |
|---|---|
| SMTPホスト | smtp.gmail.com |
| ポート | 587 |
| 暗号化 | TLS |
| 認証 | ON |
| ユーザー名 | your@gmail.com |
| パスワード | アプリパスワード |
SMTP導入後の副作用
| 副作用 | 対策 |
|---|---|
| 送信元がGmailアドレスになる | 独自ドメインで送りたいならGoogle Workspace or 別サービス |
| Googleの送信制限に引っかかる | 1日500通制限。大量送信ならSendGrid等 |
| プラグイン無効化でメール停止 | 本番では安易に無効化しない |
| アプリパスワード漏洩リスク | wp-config.phpに定数で定義、DBに保存しない |
送信ログの確認
メールが送信されたか、どこで失敗したかを記録する。
Post SMTPの場合
ダッシュボード → Post SMTP → メールログ
| ステータス | 意味 |
|---|---|
| Sent | 送信成功 |
| Failed | 送信失敗(エラー内容を確認) |
ログがなければ、そもそもフォームからメール送信処理が呼ばれていない。
判断フローチャート
メールが届かない
↓
迷惑メールフォルダにある? → Yes → SPF/DKIM設定を確認
↓ No
送信ログは記録されている?
↓ No → フォームプラグインの設定を確認
↓ Yes
ログのステータスは?
↓
Sent → 受信側の問題(SPF/DKIM、受信フィルタ)
Failed → エラー内容を確認(認証失敗、タイムアウト等)
トラブルシューティング
| 症状 | 原因 | 対処 |
|---|---|---|
| ログに「認証失敗」 | SMTP認証情報が間違い | ユーザー名・パスワード再確認 |
| ログに「接続タイムアウト」 | ポートがブロック | 587 → 465に変更、またはサーバー確認 |
| 送信成功なのに届かない | 受信側で拒否 | SPF/DKIM設定、送信元アドレス見直し |
| 1日に数通しか届かない | サーバーの送信制限 | 外部SMTPに切り替え |
| 特定ドメインだけ届かない | 受信側の企業フィルタ | 相手のIT担当に確認依頼 |
まとめ
- 迷惑メールフォルダを最初に確認
- 送信元アドレスはサイトと同じドメインの実在アドレス
- SPF未設定だと受信側で拒否される
- サーバーのmail()が使えないならSMTPプラグイン
- 送信ログで「送信されたか」を確認できる状態にしておく
- ホスティングごとに送信制限とDKIM設定方法が違う
関連記事
- DNSレコードの調べ方と判断基準 — SPFレコードの確認方法
- WP-Cronが動かない原因と対処 — メールキューが送信されない場合