初心者も分かるようPHPメールフォームを解説 ITかあさん

ITかあさん

初心者も分かるよう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:info@example.com\n";//送信者の情報(メールヘッダー)
$add_header	.= "Reply-to: info@example.com\n";//送信者の情報(メールヘッダー)
$add_header	.= "X-Mailer: PHP/". phpversion();
$opt = '-f'.'info@example.com'; //-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('info@example.com',"問い合わせがありました",$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!!

ページ: 1 2 3 4 5 6 7