2026年8月29日
2026年8月29日
WPFormsの通知メールが届かないときのSMTP確認手順と設定の見直し方
WPFormsでフォームを送信しても通知メールが届かない場合、原因の多くはWPForms本体ではなく「WordPressからのメール送信の仕組み」にあります。WPFormsは通知の送信をWordPress標準の wp_mail() に任せているため、サーバーのメール送信が不安定だったり、送信元アドレスが受信側に信用されなかったりすると、フォームは正常に動いていてもメールだけが消えます。この記事では、フォームの通知設定の確認から、WP Mail SMTPを使ったSMTP送信への切り替え、テスト送信とエラーログでの原因特定までを順に説明します。
どこで止まっているかを切り分ける
最初に、問題が「フォームの送信」なのか「メールの配送」なのかを分けます。
- 送信ボタンを押した後に完了メッセージ(確認メッセージ)が表示されるか
- 表示されない、またはエラーが出る場合は、フォーム自体の送信が失敗しています。JavaScriptの競合やスパム対策による拒否を疑います。
- 完了メッセージは出るのにメールが来ない場合は、メール配送の問題です。この記事の手順の大半はこちらに当てはまります。
あわせて、受信側の迷惑メールフォルダも確認します。Gmailなどでは、送信元の認証が不十分なメールは受信トレイに入らず迷惑メールに振り分けられるか、受信そのものを拒否されます。迷惑メールフォルダに入っていれば「届いてはいるが信用されていない」状態で、後述の送信元アドレスとSMTPの設定で改善します。
手順1:フォームの通知設定を確認する
WPFormsの管理画面で対象フォームを編集し、フォームビルダーの「設定」から「通知」を開きます。(2026年10月現在)のWPFormsでは、ここで通知のオンオフと、通知ごとの送信先・件名・送信元を設定できます。確認する項目は次のとおりです。
- 通知が有効になっているか: 通知自体がオフになっていると、どれだけ設定しても送信されません。
- 送信先メールアドレス: 初期値は
{admin_email}というスマートタグで、「設定」→「一般」の管理者メールアドレスに置き換わります。管理者アドレスが古いままになっていないか確認します。 - 送信元メールアドレス: ここが最も重要です。詳しくは次の手順で説明します。
- 条件付きロジック: 通知に条件を付けている場合、条件に合わない送信では通知が出ません。テストで入力した値が条件を満たしているかを見ます。
通知を複数作っている場合は、それぞれの通知で同じ確認を行います。
手順2:送信元アドレスをサイトのドメインに合わせる
通知メールが届かない典型的な原因が、送信元メールアドレスと送信サーバーのドメインが一致していないことです。たとえば、example.com のサーバーから送るのに、送信元を yourname@gmail.com にしていると、受信側はSPF・DKIM・DMARCといった送信ドメイン認証で「なりすまし」と判断しやすくなります。
送信元には、サイトと同じドメインのアドレス(info@example.com など)を指定します。問い合わせた人のアドレスを送信元にしたい、という要望はよくありますが、その場合は送信元ではなく「返信先(Reply-To)」の欄に、メールアドレス欄のスマートタグを入れます。こうすると、受け取った通知に「返信」するだけで問い合わせ者に返信でき、送信元の認証も崩れません。
手順3:WP Mail SMTPでSMTP送信に切り替える
送信元を直しても届かない場合は、サーバーのPHPからそのまま送る方式をやめ、SMTPで認証付きの送信に切り替えます。WPFormsと同じ開発元が提供しているWP Mail SMTPプラグインを使うのが手軽です。他のSMTPプラグインでも考え方は同じです。
作業前に、サイトのバックアップを取っておきます。SMTPプラグインの導入はサイト全体のメール送信(パスワード再設定メールなど)に影響するためです。
WP Mail SMTPを有効化したら、設定画面で「メーラー」を選びます。選択肢には一般的なSMTPサーバーを使う「その他のSMTP」のほか、Gmail(Google Workspace)、SendGrid、Mailgun、Amazon SESなどのメール配信サービス向けの項目があります(対応サービスはバージョンで変わります)。レンタルサーバーのメールアカウントを使う場合は「その他のSMTP」を選び、サーバー会社が案内している次の値を入力します。
- SMTPホスト: サーバー会社が指定するホスト名
- 暗号化とポート: TLS(STARTTLS)なら587番、SSLなら465番が一般的
- 認証: オンにして、メールアカウントのユーザー名とパスワードを入力
パスワードを管理画面に保存したくない場合、WP Mail SMTPは wp-config.php に定数で設定値を書く方法にも対応しています。定数名はプラグインの公式ドキュメントで確認してから設定します。
送信元アドレスについては、WP Mail SMTP側にも送信元を設定する欄と、他のプラグインの送信元設定よりこちらを優先させるオプション(「送信元メールアドレスを強制」に相当する項目)があります。SMTPで認証するアカウントと送信元が異なると、SMTPサーバーが送信を拒否することがあるため、両者をそろえておきます。
手順4:テスト送信で結果を確かめる
WP Mail SMTPには、設定画面とは別にテストメールを送る画面(ツール内の「メールテスト」)があります。ここから自分のアドレスへテストメールを送ると、失敗した場合はSMTPサーバーとのやり取りを含むエラー内容が表示されます。よく見るエラーと原因の目安は次のとおりです。
- 接続できない・タイムアウト: ポートがサーバー側でふさがれている、またはホスト名の誤り。25番ポートは多くのサーバーで外向き通信が制限されているため、587番か465番を使います。
- 認証エラー: ユーザー名・パスワードの誤り。Gmailの場合は通常のパスワードではなく、アプリパスワードやOAuth連携が求められます。
- 送信者アドレスの拒否: 認証アカウントと送信元アドレスの不一致。
テストメールが届いたら、実際のフォームから送信し、通知が届くかを確認します。
手順5:送信失敗をログに残す
SMTP設定を入れる前の段階で原因を知りたい場合や、ときどきだけ届かない場合は、WordPressのメール送信失敗をログに記録すると手がかりが得られます。wp_mail() が失敗すると wp_mail_failed アクションが実行され、エラー内容が WP_Error として渡されます。次のコードを子テーマの functions.php やコードスニペット系プラグインに追加し、wp-config.php で WP_DEBUG_LOG を有効にしておくと、wp-content/debug.log にエラーが記録されます。
add_action( 'wp_mail_failed', function ( $wp_error ) {
if ( is_wp_error( $wp_error ) ) {
error_log( 'wp_mail failed: ' . $wp_error->get_error_message() );
}
} );
ログに個人情報が残る場合があるため、原因が分かったらコードを外し、debug.log も削除しておきます。なお、wp_mail() が成功を返しても、その後に受信側で拒否されたり迷惑メール扱いされたりすることはあります。ログにエラーが無いのに届かないときは、送信ドメイン認証(SPF・DKIM・DMARC)の設定をドメインのDNSで確認します。
届かなかった問い合わせを取りこぼさないために
メールは配送の途中で失われる可能性があるため、通知メールだけに頼らない運用も考えておきます。WPFormsの有料版では送信内容(エントリー)を管理画面に保存できるため、メールが届かなくても内容を確認できます。無料版では保存の扱いが限られるため、運用中のフォームでは、定期的にテスト送信して通知が届くかを点検すると安心です。
まとめ
- 完了メッセージが出るかで、フォーム送信の失敗かメール配送の失敗かを切り分ける
- 通知設定のオンオフ、送信先、条件付きロジックを確認する
- 送信元はサイトと同じドメインのアドレスにし、問い合わせ者のアドレスは返信先に入れる
- 届かない場合はWP Mail SMTPなどでSMTP送信に切り替え、テストメールでエラー内容を見る
wp_mail_failedでログを取り、ログに異常が無ければDNSの送信ドメイン認証を確認する