PHPでお問い合わせフォームを作成すると、入力したユーザーへ自動返信メールを送信する仕組みはよく利用されます。しかし実際の運用では、ユーザーへの返信だけでなく、サイト管理者にもお問い合わせ内容の控えを送る必要があります。この記事では、PHPのmb_send_mailを使って、フォーム送信者と管理者の両方へメールを送信する方法や実装時の注意点について解説します。
お問い合わせフォームで管理者にもメールを送る仕組み
お問い合わせフォームでは、一般的に2種類のメール送信処理が必要になります。1つ目はお問い合わせをしたユーザーへ送る確認メール、2つ目はサイト運営者が内容を確認するための通知メールです。
例えば、お客様がフォームから「商品について質問」を送信した場合、入力したメールアドレスには「お問い合わせありがとうございます」という自動返信メールを送ります。同時に運営者側には、お客様の名前や問い合わせ内容を含めた通知メールを送ることで、返信対応がしやすくなります。
PHPではmb_send_mail関数を利用してメール送信できますが、送信先を変更してもう一度mb_send_mailを実行することで、同じ内容を別のメールアドレスへ送信できます。
送信者と管理者へ2通のメールを送る基本的な方法
現在のプログラムでは、$toにフォーム入力者のメールアドレスを設定しているため、ユーザーへのメールだけが送信されています。
管理者にもメールを送る場合は、管理者用の送信先を別の変数として用意し、mb_send_mailを追加で実行します。
例えば以下のように記述できます。
<code>//ユーザーへの自動返信
$user_mail = $_POST[‘user_email’];
$subject = “お問い合わせありがとうございます。”;
$message = “お問い合わせ内容を受け付けました。”;
$headers = “From: info@example.com”;
mb_send_mail($user_mail, $subject, $message, $headers);
//管理者への通知メール
$admin_subject = “お問い合わせがありました”;
$admin_message = <<
【お名前】
{$_POST[“user_name”]}
【メールアドレス】
{$_POST[“user_email”]}
【お問い合わせ内容】
{$_POST[“user_message”]}
EOM;
mb_send_mail($admin_mail, $admin_subject, $admin_message, $headers);</code>
このようにmb_send_mailを2回呼び出すことで、1回目はユーザー向け、2回目は管理者向けという形でメールを分けて送信できます。
ユーザー向けメールと管理者向けメールは内容を分ける
実際のWebサイト運営では、ユーザーと管理者では必要な情報が異なるため、メール本文は分けて作成することがおすすめです。
ユーザー向けメールでは「お問い合わせを受け付けました」という確認内容を中心にします。一方、管理者向けメールでは、名前、電話番号、住所、問い合わせ内容など、対応に必要な情報をすべて含めます。
例えば予約フォームの場合、ユーザーには予約受付完了の案内だけを送り、管理者には予約日時や連絡先などを含めた詳細通知を送ると、業務管理がしやすくなります。
お問い合わせフォームのメール送信で注意すべきポイント
メール送信処理を作成するときは、セキュリティ面にも注意が必要です。特に$_POSTの値をそのままメール本文へ利用する場合、不正な入力によるメールヘッダーインジェクションなどの危険があります。
メールアドレスを取得する場合は、filter_var関数などを利用して入力値を確認することが大切です。
また、Fromヘッダーにはフォーム入力者のメールアドレスを直接設定せず、自分のドメインのメールアドレスを設定するほうが安全です。迷惑メール判定を防ぐためにも、送信元は固定のアドレスを利用するケースが一般的です。
管理者通知メールを追加するときのコード配置場所
既存のプログラムでは、最後にmb_send_mail($to, $subject, $message, $headers);という部分があります。この処理の後に管理者向けメール送信処理を追加する形が分かりやすいです。
つまり、現在の自動返信メール処理はそのまま残し、その下に管理者用の宛先、件名、本文を設定したmb_send_mailを追加します。
処理を分けて記述しておくことで、後から「管理者を複数人に増やす」「問い合わせ内容によって通知先を変える」といった拡張もしやすくなります。
まとめ:PHPのお問い合わせフォームではmb_send_mailを2回利用して送信先を分ける
PHPのお問い合わせフォームで、入力者とサイト管理者の両方へ確認メールを送信したい場合は、mb_send_mailを送信先ごとに実行する方法が基本です。
ユーザーには受付確認メール、管理者には問い合わせ内容の通知メールを送ることで、利用者にも運営者にも分かりやすいフォームになります。
ただし、実際のサイト運用では入力値のチェックやメール送信設定にも注意が必要です。安全な入力処理と適切なメール設定を組み合わせることで、信頼性の高いお問い合わせフォームを作成できます。

コメント