【PHP】メールフォームについて

自分で組みたい時の備忘録。

Googleフォーム

今どきただフォームが欲しいだけならGoogleのを使えば早い。
Google フォームでアンケートを作成する
そのままだったらアンケートだけど、自動返信を組み込めば問い合わせフォームやら申し込みフォームにすることもできる。
来た内容はスプレッドシートにまとめられるらしい、とても便利。
本筋から外れるのでここまで。

手っ取り早い方法

■form.html

<form action="send.php" method="post" accept-charset="utf-8"><label>名前</label>
<input type="text" name="namae" />
<label>メールアドレス</label>
<input type="email" name="email" />
<label>件名</label>
<input type="text" name="title" />
<label>お問い合せ内容</label>
<textarea name="message"></textarea>
<input type="submit" /></form>

■send.php

<?php
mb_language('ja');
mb_internal_encoding('UTF-8');
//メール送信
mb_send_mail($_POST["email"] , $_POST["title"] , $_POST["message"] , "From: info@hogehoge.jp");
?>

送信完了

これで問い合わせがinfo@hogehoge.jpに届く。
省いてるけどform.html自体の文字コードはutf-8。
shift-jisにしろとか書いてたりするけど、utf-8にして今のところ文字化け起こしたことない。
慣習が続いてるだけなんだろうか。

頑張って作る

ただ管理者にメールが届くだけなのは色気がないし、
件名とかぶっちゃけなくてもいいし、
例えば申し込みさせたいってなったらフォームの内容をもっと作りこまなきゃいけない。
↓それでこうする
■form.html

<form action="send.php" method="post" accept-charset="utf-8"><label>開催日</label>
<select name="date">
<option value="今日">今日</option>
<option value="明日">明日</option>
<option value="明後日">明後日</option>
</select>
<label>名前</label>
<input type="text" name="namae" />
<label>住所</label>
<input type="text" name="zip" />
<label>電話番号</label>
<input type="tel" name="tel" />
<label>メールアドレス</label>
<input type="email" name="email" />
<label>お問い合せ内容</label>
<textarea name="message"></textarea>
<input type="submit" /></form>

■send.php

<?php
mb_language('ja');
mb_internal_encoding('UTF-8');

$message = 
"ホームページよりお問い合わせがありました。
開催日:" . $_POST["date"] . 
"お名前:" . $_POST["name"] . 
"住所:" . $_POST["zip"] . 
"電話番号:" . $_POST["tel"] . 
"メールアドレス:" . $_POST["email"] . 
"本文:" . $_POST["message"];

$message = 
"※こちらは自動返信となります。
以下の内容で申し込みをお受けしました。
受講通知につきましては追ってご連絡致します。

開催日:" . $_POST["date"] . 
"お名前:" . $_POST["name"] . 
"住所:" . $_POST["zip"] . 
"電話番号:" . $_POST["tel"] . 
"メールアドレス:" . $_POST["email"] . 
"本文:" . $_POST["message"] . 
"----------
株式会社なんちゃら
東京都どこそこ";

//メール送信
mb_send_mail($_POST["email"] , "ホームページからお問い合わせがありました", $message, "From: info@hogehoge.jp");
//自動返信
mb_send_mail("info@hogehoge.jp", "お問い合わせありがとうございます", $message2, "From: " . $_POST["email"]);
?>

送信完了

みたいな。
改行は\nで付けたほうが安心かも。
丸コピーしても多分動く。
こうすると、複数項目を設置したいときに対応できる。
フォームを打ち込んだ側にも入力内容のリマインドがメールされる。
件名が固定されるからメーラーでソートかけるときに楽ちん。

ちなみに

このまま使うと入力漏れがあってもスルーされる。
確認画面も作ってないし、バリデーション仕込んでない。
入力チェック自体はphp使わなくてもjsで済ませられるから最近は手間が少なくて助かる。
確認画面作りたかったら送信のphpの手前に入力内容表示するphpを噛ませたらいい。

最後に

応用すれば嫌がらせメールとかバンバン送ることもできる。
でもわざわざサーバー用意してそんなことするのってリスクとか諸々すげーしんどいじゃん。
串通してとかそんなアレなら田代砲とか?
まーそんな相手いないしなー。
みたいな。

コメント

タイトルとURLをコピーしました