Copicode 日本語トップ

ロリポップでPHPメールフォームが送信できたか分からない時のログ確認順番

お問い合わせフォームは、画面では「送信完了」と出ていても、メールが届いていないことがあります。原因を追うには、送信処理の結果をログに残しておくとかなり楽になります。

この記事では、PHPメールフォームで mb_send_mail の成功・失敗、時刻、送信先、IP、簡単な原因メモを安全に残す方法を整理します。ログは公開ページに表示せず、管理者が確認するためのものとして扱います。

確認日と対象

確認日: 2026年5月16日。ロリポップで自作PHPメールフォームを使っていて、完了画面は出るが本当に送信されたか分からない、失敗原因を後から追えない人向けです。

WordPressプラグイン固有のログ、大規模な監視基盤、外部メール配信サービスの詳細ログは対象外です。まず mb_send_mail の戻り値を残し、公開画面に詳細エラーを出さない形にします。

送信ログで追う流れ

フォーム送信、入力チェック、メール送信、ログ記録、管理者確認を分けると、どこで止まったかを後から見返せます。

PHPメールフォームで入力チェック、mb_send_mail、送信結果ログ、管理者確認、再発防止を順番に行う図解

ログに残すもの・残さないもの

項目残す理由注意
日時いつ起きたか分かるタイムゾーンをそろえる
送信結果成功か失敗か分かるtrue/false だけでも役立つ
送信先設定ミスを見つける管理者メールだけにする
IPアドレス連続投稿やスパム傾向を見る扱いに注意し、必要以上に公開しない
入力内容原因調査に使える場合がある本文全文や個人情報は残しすぎない
エラー詳細原因の切り分けに使う公開画面には出さない

実際に見る順番

送信できたか分からない時は、いきなりフォーム全体を書き換えず、ログが増える場所から確認します。

順番見る場所分かること
1フォームの完了画面成功時だけ完了表示になっているか
2mb_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で直接見えないように注意します。できれば公開フォルダの外、またはアクセス制限した場所へ置きます。

.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、返信先、迷惑メール側の確認に使います。

関連記事