初心者も分かるようPHPメールフォームを解説
send.php送信ページのおさらい
最後に送信ページをもう一度おさらいしましょう。
いきなりこのページを見た時はちんぷんかんぷんだった人も、もう一度見るとなんとな~く分かってきたのではないしょうか。
再び違うページに移動した時もsession_start()をすることを忘れないで下さい。
$_SESSION[‘name’]となっている部分は$_POST[‘name’]も含め、まるごと代入しているのです。
check.phpと見比べても、$_POSTが$_SESSIONになっているだけですよね。
$_SESSIONの中身が気になる方はprint_r($_SESSION)を実行されるといいですよ。
難しくないですね。
session_start();//ページ移動したら再びsession_start //Sessionが正しくセットされていなければリダイレクト //今回のケースだと、名前入れてないわけないでしょ!ということでリダイレクトを。exit();でもOK。 if($_SESSION['name']==""){ header('Location: http://www.example.com/');// headerlocationはPHPのリダイレクト処理でよく使う。 } $add_header="From:[email protected]\n";//送信者の情報(メールヘッダー) $add_header .= "Reply-to: [email protected]\n";//送信者の情報(メールヘッダー) $add_header .= "X-Mailer: PHP/". phpversion(); $opt = '-f'.'[email protected]'; //-fすると迷惑メールになりにくいとか、そんなことだったと思う。送信エラーの時にエラーメールを返す先 //以下ヒアドキュメント<<<●● HTMLでも、文字列でも、何いれてもOK●●; //ヒアドキュメントは、メール送信とかの定型文を書いたりするとき、あとはSQLを書くときも使うかな。 //ヒアドキュメント内ではPHPのプログラムは一切かけない。変数だけ。変数は{}で囲ってあげること //メールの本文をここでひとまとめに。 $message =<<<HTML お問い合わせ内容の確認です。 お名前 {$_SESSION['name']} E_mail {$_SESSION['e_mail']} お問い合わせ内容 {$_SESSION['comment']} 内容確認後、担当者より折り返しご連絡をさせて頂きます。 今しばらくお待ちください。 HTML; // カレントの言語を日本語に設定する mb_language("ja"); // 内部文字エンコードを設定する このエンコード指定は大昔の携帯だとShift-jisにしないとだめだったとか。 // 今はUTF-8にしておけばだいたいOKだから、楽な時代になったもんだよ。 mb_internal_encoding("UTF-8"); mb_send_mail($_SESSION['e_mail'],"【お問い合わせ】確認メール",$message,$add_header,$opt); //mb_send_mailは5つの設定項目がある //mb_send_mail(送信先メールアドレス,"メールのタイトル","メール本文","メールのヘッダーFromとかリプライとか","送信エラーになったらどこにメール返すんじゃいっ!"); //5番目の情報は第5引数と呼ばれるものでして、これがないと迷惑メール扱いになることも。 //マスター管理者にもお問い合わせがあったことを知らせる mb_send_mail('[email protected]',"問い合わせがありました",$message,$add_header,$opt); session_destroy(); // セッションを破棄
迷惑メールになるケース
どんなに頑張ってメールフォームを作っても、迷惑メール扱いになって、YahooメールはGmailで迷惑メールフォルダに確認メールが振り分けられてしまうことがあります。
こればかりは一部どうしようもないケースもありまして、迷惑メールにならないようにするこつは
むやみやたらとメール本文にURLを書かない
mb_send_mailの第5引数をちゃんと設定する
本文に高収入など、迷惑メールになるようなキーワードを盛り込まない
これらの対策が必要です。
携帯のメール送信については本文中にURLがあったとして、そのURLが不正なドメインとしてもし認識されていると、それだけで届かないこともあります。
ためしにフィルタリングを強にして、あやしげなドメインを本文中に書いて送信したところ、受信することが出来ませんでした。
これらのルールを守っても、正しくフォルダに振り分けられないケースもあります。
ドメインのDNSの設定の問題だったりするケースもあるからです。
とにかく、本当にメールを正しく送信することは難しいのです。
実はPHPのほかにサーバーの知識も少しないと完璧なメールフォームは作れないんです。
おしまいに。
まさか簡単なメールフォームの解説に7ページも使うとは思いませんでした。
自分がWEBデザイナーだったとき、何が分からなかったかをメインに解説したつもりです。
メールフォームは簡単ではありません。
送信実行は、サーバーの設定でも失敗するケースだってありますから。
サーバーにメールの設定がキチンと完了していなければ、そもそもメールを送信することすら出来ませんからね。
ですから、私は今回はメール送信が失敗しても問題ないと思います
大事なのは$_POSTと$_SESSIONと正しいフォームの書き方です。
最初は無理にかっこよく書こうと思わないことですね。
PHPの一番いいところは、HTMLの中にガシガシ書いても動作上何ら問題ないところ。
まずはHTMLの中にガシガシPHP書いて、ガシガシ動かしましょう!
カッコイイPHPの書き方はオープンソースのフレームワークをがっつり使うようになると、自然にそのように書きます。
Let’s Enjoy PHP!!