ロリポップでPHPメールフォームが送信できたか分からない時のログ確認順番
お問い合わせフォームは、画面では「送信完了」と出ていても、メールが届いていないことがあります。原因を追うには、送信処理の結果をログに残しておくとかなり楽になります。
この記事では、PHPメールフォームで mb_send_mail の成功・失敗、時刻、送信先、IP、簡単な原因メモを安全に残す方法を整理します。ログは公開ページに表示せず、管理者が確認するためのものとして扱います。
確認日と対象
確認日: 2026年5月16日。ロリポップで自作PHPメールフォームを使っていて、完了画面は出るが本当に送信されたか分からない、失敗原因を後から追えない人向けです。
WordPressプラグイン固有のログ、大規模な監視基盤、外部メール配信サービスの詳細ログは対象外です。まず mb_send_mail の戻り値を残し、公開画面に詳細エラーを出さない形にします。
送信ログで追う流れ
フォーム送信、入力チェック、メール送信、ログ記録、管理者確認を分けると、どこで止まったかを後から見返せます。
ログに残すもの・残さないもの
| 項目 | 残す理由 | 注意 |
|---|---|---|
| 日時 | いつ起きたか分かる | タイムゾーンをそろえる |
| 送信結果 | 成功か失敗か分かる | true/false だけでも役立つ |
| 送信先 | 設定ミスを見つける | 管理者メールだけにする |
| IPアドレス | 連続投稿やスパム傾向を見る | 扱いに注意し、必要以上に公開しない |
| 入力内容 | 原因調査に使える場合がある | 本文全文や個人情報は残しすぎない |
| エラー詳細 | 原因の切り分けに使う | 公開画面には出さない |
実際に見る順番
送信できたか分からない時は、いきなりフォーム全体を書き換えず、ログが増える場所から確認します。
| 順番 | 見る場所 | 分かること |
|---|---|---|
| 1 | フォームの完了画面 | 成功時だけ完了表示になっているか |
| 2 | mb_send_mail の戻り値 | PHP側で送信成功扱いか |
| 3 | ログファイルの更新日時 | 送信処理まで到達しているか |
| 4 | ログの success / failed | 送信前で止まったか、送信後の受信問題か |
| 5 | 送信先、From、Reply-To | メールヘッダーや宛先のミス |
| 6 | 同じIPの連続投稿 | スパムや自動投稿の兆候 |
| 7 | ログの置き場所と公開可否 | 個人情報やIPが外から見えていないか |
まずmb_send_mailの戻り値を残す
送信結果を見ずに完了画面へ進めると、失敗に気づけません。最低限、戻り値をログへ残します。
<?php
$sent = mb_send_mail($to, $subject, $body, $headers);
$log_line = sprintf(
"[%s] mail=%s to=%s ip=%s\n",
date('Y-m-d H:i:s'),
$sent ? 'success' : 'failed',
$to,
$_SERVER['REMOTE_ADDR'] ?? '-'
);
error_log($log_line, 3, __DIR__ . '/logs/contact-form.log');
ログフォルダは公開に注意する
ログを公開フォルダ内に置く場合、URLで直接見えないように注意します。できれば公開フォルダの外、またはアクセス制限した場所へ置きます。
logs/を作る前に外から見える場所か確認する- ログファイル名を推測されにくくするより、アクセス制限を優先する
- ログをGitHubへ上げない
- 古いログを定期的に退避または削除する
.gitignoreに入れる
問い合わせログにはIPや送信結果などの運用情報が含まれます。GitHubで管理するサイトではログファイルを除外します。
logs/
*.log
ログを見て分かること
| ログの状態 | 考えられること | 次に見る場所 |
|---|---|---|
| ログ自体が増えない | フォーム処理まで届いていない | action、method、PHPエラー、パス |
failed が残る | メール送信処理が失敗 | From、送信先、mb_send_mail、PHP設定 |
success だが届かない | 送信後に迷惑メール判定 | 迷惑メール、SPF、From、Reply-To |
| 同じIPが連続する | スパムや連続投稿の可能性 | Turnstile、レート制限、入力チェック |
画面には詳しい理由を出しすぎない
ユーザー向け画面には「送信できませんでした。時間をおいて再度お試しください」程度にし、詳細はログに残します。サーバー内のパスや設定情報を画面に出すのは避けます。
AIに相談する時のメモ
AIに相談する時は、ログの形式と、送信テスト時に増えた行だけを貼ります。メール本文全文、IP、個人情報、管理者メールは必要に応じて伏せてください。
ロリポップのPHPメールフォームで、送信できたか分からないためログを残したいです。
フォームURL:
起きている症状:
例: 完了画面は出るが届かない / mb_send_mailがfalse / ログが増えない / successなのに届かない
送信処理:
例: mb_send_mail
今の完了画面の条件:
例: mb_send_mailの結果を見る前に完了表示している / trueの時だけ表示している
ログを置きたい場所:
例: __DIR__ . '/logs/contact-form.log'
テスト送信時に増えたログ:
例: [2026-05-16 12:00:00] mail=failed to=info@example.com ip=伏せています
確認したこと:
- ログファイルの更新日時:
- mb_send_mailの戻り値:
- From:
- Reply-To:
- 迷惑メール:
- ログが外から見えないか:
メール本文全文、IP、管理者メール、個人情報は必要に応じて伏せています。
初心者向けに、次に見る順番を教えてください。
公式情報で確認するところ
| 確認したいこと | 公式情報 | この記事での使い方 |
|---|---|---|
mb_send_mail の戻り値 |
PHP公式 mb_send_mail | 送信処理の戻り値が真偽値で返ること、Fromヘッダーまわりを確認します。 |
error_log でファイルへ残す |
PHP公式 error_log | 送信結果やエラー詳細を公開画面ではなくログへ残す時に使います。 |
| ロリポップでメールフォームから送ったメールが届かない時 | ロリポップ公式 メールフォームから送信したメールが届かない | ログ上は成功でも届かない場合のFrom、返信先、迷惑メール側の確認に使います。 |