WordPressでお問い合わせフォームを作る際によく利用される「Contact Form 7」。

普段は問題なく動いていても、ある日突然、

  • フォームから送信はできる
  • 「ありがとうございます。メッセージは送信されました。」と表示される
  • Flamingoにも問い合わせ内容が保存されている
  • なのに通知メールだけ届かない

ということがあります。実際にこの症状に遭遇すると、

「Contact Form 7が壊れた?」
「サーバーの問題?」
「フォームの設定がおかしい?」

と、どこから調べればいいのか分かりにくいです。

今回は、Contact Form 7で送信した内容がFlamingoには保存されているのに、メールだけ届かない場合の確認ポイントをまとめます。

問い合わせは保存されているのにメールが届かず困っているイメージ

まず確認:Flamingoに保存されているならフォーム送信はできている

最初に確認したいのがFlamingoです。

WordPress管理画面から、「Flamingo」→「受信メッセージ」を開き、テスト送信した内容が保存されているか確認します。

Flamingoは、Contact Form 7から送信された内容をWordPressのデータベースに保存するプラグインです。

Contact Form 7自体には送信内容を保存する機能がないため、メールトラブルに備えてFlamingoを入れておくと非常に便利です。

ここに問い合わせ内容が正常に保存されている場合、「フォームから送信されたデータそのものはWordPressまで届いている」と考えることができます。

つまり、「フォームが動いていない」のではなく、「メールを送信・配送する部分で問題が発生している可能性が高い」というところまで切り分けられます。

Flamingoに保存されているかでContact Form 7のトラブルを切り分ける図

Contact Form 7で「送信成功」=メールが届いた、ではない

ここは意外と重要です。

Contact Form 7で「ありがとうございます。メッセージは送信されました。」と表示されたからといって、必ずしも受信者のメールボックスまでメールが届いたことを意味するわけではありません。

Contact Form 7公式FAQでも、送信成功のメッセージが表示された場合はメール送信処理自体は正常に完了しているものの、その後の配送過程やスパムフィルターなどによって受信できないケースがあると説明されています。

そのため、

「送信成功と表示されている」
「Flamingoにも保存されている」
「でもメールがない」

という場合は、メール設定やメールサーバー側を中心に調べていきます。

1. まず迷惑メールフォルダを確認する

最初にやるべきなのはこれです。

Gmailなどでは、WordPressから送信されたメールが迷惑メールとして判定されることがあります。特に、

  • 新しく公開したサイト
  • 独自ドメインのメール
  • WordPress標準のメール送信機能を使用
  • Fromアドレスの設定に問題がある
  • SPF・DKIM・DMARCなどの認証が不十分

といった環境では、迷惑メール扱いされる可能性があります。

まずは受信側の「迷惑メール」「プロモーション」「すべてのメール」なども確認してみましょう。

2. Contact Form 7の「メール」設定を確認する

次にContact Form 7の設定を確認します。

WordPress管理画面から、「お問い合わせ」→「コンタクトフォーム」→対象フォーム→「メール」を開きます。特に確認したいのは以下です。

送信先

「送信先」に正しいメールアドレスが入力されているか確認します。例えば、

info@example.com

のようになっている部分です。単純な入力ミスも意外とあります。

複数人でサイトを管理している場合、フォームを複製した際に古いメールアドレスが残っているケースもあります。

3. From(送信元)の設定を確認する

メールが届かない場合、特に注意したいのが「送信元」です。

例えばサイトのドメインがexample.comの場合、送信元にはwordpress@example.comやinfo@example.comなど、サイトと同じドメインのメールアドレスを設定するのが基本です。

Contact Form 7の初期設定でも、送信元は[_site_title] <wordpress@example.com>のように、サイトのドメインのアドレスになっています。

問い合わせフォームに入力されたユーザーのメールアドレスを、そのままFromに設定するのはおすすめできません。例えば、

From: [your-name] <[your-email]>

としてしまうと、ユーザーがGmailを入力した場合、

example.comのWebサーバーから
@gmail.comを送信元とするメールが送信される

という状態になります。メールサーバーから見ると不自然なメールになり、なりすましと判定される原因になります。

そのため、

From: サイト名 <wordpress@example.com>

のようにサイト自身のメールアドレスを使用し、ユーザーのメールアドレスはReply-Toに設定します。

「メール」タブの「追加ヘッダー」欄に、

Reply-To: [your-email]

としておけば、届いたお問い合わせメールに返信した際はユーザーのメールアドレス宛に返信できます。

Contact Form 7のFromとReply-ToのNG例とOK例

4. 別のメールアドレスにも送信してみる

原因を切り分けるために、

  • Gmail
  • 独自ドメインメール
  • Outlookなど別サービス

と送信先を変更してテストするのも有効です。

例えば「会社のメールには届かないけどGmailには届く」のであれば、WordPressよりも受信側メールサーバーや迷惑メールフィルターを疑った方がよいでしょう。

逆に、どのメールアドレスにも届かない場合は、WordPress側や送信メールサーバー側の問題である可能性が高くなります。

5. 少し時間を置いてみる

意外とあるのがメールの遅延です。

フォームを送信して「メールが来ない!」と思って調査を始めたものの、10分後くらいに普通に届くことがあります。

メールはWebページの表示とは違い、

WordPress
↓
送信側メールサーバー
↓
インターネット
↓
受信側メールサーバー
↓
迷惑メール判定
↓
メールボックス

という複数の処理を経由します。そのため、必ずしも即時に届くとは限りません。

Flamingoに正常に保存されている場合は、まず数分〜十数分程度待ってみるのもひとつです。

6. SPF・DKIM・DMARCを確認する

独自ドメインからメールを送信している場合は、

  • SPF
  • DKIM
  • DMARC

といったメール認証設定も確認しておきたいところです。簡単にいうと、これらは、

「このサーバーから送信されたメールは、本当にこのドメインから送信してよいメールですよ」

ということを受信側メールサーバーに証明する仕組みです。

これらが適切に設定されていないと、メール自体は送信できても迷惑メール判定されたり、受信側で拒否されたりすることがあります。

特に最近のGmailなどはメール認証を重視しているため、Webサイトからメールを送る場合でも確認しておいた方がよいでしょう。

Gmailで認証エラーが返ってきた時の例は、こちらの記事にまとめています。

【メールエラー】reason: 550-5.7.1 This message does not have authentication information or fails to pass 対処方法

7. サーバーのメールログを確認する

サーバー側でメールログを確認できる場合は、かなり有力な手がかりになります。確認したいのは、

  • WordPressからメールが送信されたか
  • メールサーバーが受け付けたか
  • 配送エラーが発生していないか
  • 受信側サーバーから拒否されていないか

などです。

Contact Form 7公式FAQでも、送信成功になっているのにメールが届かない場合、メールサーバーのログが問題解決の手がかりになると案内されています。

レンタルサーバーを使用していてログを確認できない場合は、サーバー会社のサポートに問い合わせるのも方法のひとつです。

レンタルサーバーの仕様が原因だったケースとしては、こんな例もありました。

【さくらレンタルサーバー】メールフォームからのメールが届かない場合の対処方法

8. SMTP経由で送信する

ここまで確認しても安定しない場合は、WordPressからのメール送信方法そのものを見直します。

WordPressでは通常、PHPのメール送信機能を利用してメールを送信します。しかし環境によっては、

  • メールが迷惑メール扱いされる
  • サーバー側で制限される
  • メール認証との整合性が取れない
  • 到達率が安定しない

といった問題が発生することがあります。そこで利用できるのがSMTPです。

「WP Mail SMTP」などのSMTP対応プラグインを使用すると、WordPressからのメールを適切なメールサーバー経由で送信できます。

ただし、「Contact Form 7を使うなら必ずSMTPプラグインが必要」というわけではありません。

通常のメール送信で問題なく運用できているサイトであれば、無理に導入する必要はありません。メールが頻繁に届かない、到達率が安定しない、といった場合に導入を検討するとよいでしょう。

ちなみに「skip_mail」が設定されていないか確認

少し特殊なケースですが、Contact Form 7の「その他の設定」に、

skip_mail: on

が設定されていないかも確認してみましょう。

この設定が有効になっていると、Contact Form 7はメール送信処理をスキップします。一方でFlamingoへの保存など、メール送信以外の処理には影響しません。

そのため、「Flamingoには保存されるのにメールが届かない」という今回の症状が意図的に発生します。

以前の設定やテスト時に追加したものが残っていないか確認してみましょう。

Flamingoは入れておくのがおすすめ

Contact Form 7を使用するのであれば、個人的にはFlamingoも一緒に導入しておくのがおすすめです。

Contact Form 7単体では、フォームから送信された問い合わせ内容はWordPress内に保存されません。そのため、

ユーザーがお問い合わせ
↓
メール送信でトラブル
↓
管理者にメールが届かない
↓
問い合わせ内容そのものを確認できない

という事態になる可能性があります。Flamingoを入れておけば、

ユーザーがお問い合わせ
↓
Flamingoに保存
↓
メール送信

という形になるため、メールに問題が発生しても管理画面から問い合わせ内容を確認できます。

実際、今回のようなトラブルでも、「Flamingoに問い合わせが残っている」という情報だけで、かなり原因を切り分けやすくなります。

まとめ

Contact Form 7で、「Flamingoには保存されているのにメールが届かない」という場合は、フォームそのものよりメール送信・配送経路を中心に調査します。

確認する順番としては、

  1. Flamingoに問い合わせが保存されているか
  2. 迷惑メールフォルダを確認
  3. Contact Form 7の送信先を確認
  4. From・Reply-Toを確認
  5. 別のメールアドレスへテスト送信
  6. 少し時間を置いてメール遅延を確認
  7. SPF・DKIM・DMARCを確認
  8. メールサーバーのログを確認
  9. 必要ならSMTP送信を検討
  10. skip_mail: onが設定されていないか確認

という流れで切り分けると分かりやすいと思います。

Contact Form 7でメールトラブルが起きると、ついフォーム本体を疑ってしまいます。しかし、「Flamingoに保存されているか」を見ることで、「フォーム送信の問題なのか」「メール配送の問題なのか」を切り分けることができます。

お問い合わせフォームは仕事につながる重要な部分なので、Contact Form 7を利用している場合はFlamingoも導入し、定期的に受信メッセージを確認しておくと安心です。

あわせて読みたい