メール送信処理のプログラムを作成して、今回でメール送信フォームを完成させます。
メール送信処理部分を作成していきましょう。
メール送信処理部分では、ユーザーがフォーム入力した内容を元にメールを作成して、メール送信処理を実行します。
テキストエディタでmailpost.phpを開いて下記の内容を追加してください。
ソース中の●●●●●●●の部分は、ご自分のメールアドレスに書き換えてください。
サンプルソース:mailpost.php<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>メール送信完了|メール送信フォーム</title> </head> <body> <?php /******************************* データの受け取り *******************************/ $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); /******************************* 未入力チェック *******************************/ $errmsg = ''; //エラーメッセージを空にしておく if ($namae == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; } if ($mailaddress == '') { $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; } if ($naiyou == '') { $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; } /******************************* メール送信の実行 *******************************/ if ($errmsg != '') { //エラーメッセージが空ではない場合には、[前のページへ戻る]ボタンを表示する echo $errmsg; //[前のページへ戻る]ボタンを表示する echo '<form method="post" action="index.php">'; echo '<input type="hidden" name="namae" value="'.$namae.'">'; echo '<input type="hidden" name="mailaddress" value="'.$mailaddress.'">'; echo '<input type="hidden" name="naiyou" value="'.$naiyou.'">'; echo '<input type="submit" name="backbtn" value="前のページへ戻る">'; echo '</form>'; } else { //エラーメッセージが空の場合には、メール送信処理を実行する //メール本文の作成 $honbun = ''; $honbun .= "メールフォームよりお問い合わせがありました。nn"; $honbun .= "【お名前】n"; $honbun .= $namae."nn"; $honbun .= "【メールアドレス】n"; $honbun .= $mailaddress."nn"; $honbun .= "【お問い合わせ内容】n"; $honbun .= $naiyou."nn"; //エンコード処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); //メールの作成 $mail_to = "●●●●●●●"; //送信先メールアドレス $mail_subject = "メールフォームよりお問い合わせ"; //メールの件名 $mail_body = $honbun; //メールの本文 $mail_header = "from:".$mailaddress; //送信元として表示されるメールアドレス //メール送信処理 $mailsousin = mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header); //メール送信結果 if($mailsousin == true) { echo '<p>お問い合わせメールを送信しました。</p>'; } else { echo '<p>メール送信でエラーが発生しました。</p>'; } } ?> </body> </html>
入力が完了したら、mailpost.phpを上書き保存してください。
いま上書き保存したmailpost.phpをブラウザで表示確認してみましょう。
フォームの入力欄に必要事項を入力して[入力内容を確認する]ボタンを押すと、
確認ページで入力内容と[上記内容で送信する]ボタンが表示されます。
そして、[上記内容で送信する]ボタンを押したらメール送信完了画面に切り替わって、
「お問い合わせメールを送信しました。」と表示されれば成功です。
↓
↓
レンタルサーバーなどでPHPの動作する環境を利用できるなら、
ぜひ作成したPHPファイル群をサーバーにアップロードして表示確認をしてみてください。
今回作成したメール送信フォームをサーバーにアップロードして動作確認した結果、以下のようにメールが届いています。
あらためて、いまmailpost.phpに追加したメール送信処理の部分のソースに注目してみましょう。
サンプルソース:mailpost.phpの抜粋//メール本文の作成 $honbun = ''; $honbun .= "メールフォームよりお問い合わせがありました。nn"; $honbun .= "【お名前】n"; $honbun .= $namae."nn"; $honbun .= "【メールアドレス】n"; $honbun .= $mailaddress."nn"; $honbun .= "【お問い合わせ内容】n"; $honbun .= $naiyou."nn"; //エンコード処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); //メールの作成 $mail_to = "●●●●●●●"; //送信先メールアドレス $mail_subject = "メールフォームよりお問い合わせ"; //メールの件名 $mail_body = $honbun; //メールの本文 $mail_header = "from:".$mailaddress; //送信元として表示されるメールアドレス //メール送信処理 $mailsousin = mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header); //メール送信結果 if($mailsousin == true) { echo '<p>お問い合わせメールを送信しました。</p>'; } else { echo '<p>メール送信でエラーが発生しました。</p>'; }
メール本文の作成部分では、ユーザーがフォーム入力した内容を元にメール本文を作成しています。
読みやすいメールとなるように適宜改行を入れるなどしてテキストを整形しています。
整形したテキストは、$honbunという変数に格納しておいて送信処理へと引き継ぎます。
テキストを変数$honbunに格納しながらメール本文を作成していく際には、
$honbun .= “メールフォームよりお問い合わせがありました。nn”;
という具合に .= でつないでいます。
これは$honbunに格納されている内容の末尾に追加していく際の記述形式です。
また、nは改行コードです。
例えば、nnと二つ指定するとメールが届いた際にその部分が二度改行することになります。
エンコード処理の部分では、言語が日本語であること、文字コードがUTF-8であることを指定しています。
これは、メールのテキスト内容が文字化けしないようにするための指定です。
メール本文の作成ができたら、いよいよメール送信処理を行います。
メール本文は変数に格納されていますから、これを指定メールアドレスへと送信します。
PHPでメール送信を実行する場合には、mb_send_mail()関数を使用するのが一般的です。
基本的な使い方は、下記の通りです。
上記のソースで実際にメール送信を実行しているのは、
の部分です。
最後のメール送信結果の部分では、変数$mailsousinの戻り値をif文で確認しています。
trueが返れば「お問い合わせメールを送信しました。」というメッセージを、
それ以外ならば「メール送信でエラーが発生しました。」というメッセージを表示しています。
このレッスンで作成したメール送信フォームでは、文字列をシングルクォーテーション( ‘ )で囲んで指定するのを基本方針としています。
その理由については、第4回のコラム
「シングルクォーテーションとダブルクォーテーション」で
解説しているので参考にしてください。
しかし、今回のmailpost.phpのメール本文の作成のところでは、下記のように文字列をダブルクォーテーション( ” )で囲んで指定しています。
サンプルソース:mailpost.phpの抜粋//メール本文の作成 $honbun = ''; $honbun .= "メールフォームよりお問い合わせがありました。nn"; $honbun .= "【お名前】n"; $honbun .= $namae."nn"; $honbun .= "【メールアドレス】n"; $honbun .= $mailaddress."nn"; $honbun .= "【お問い合わせ内容】n"; $honbun .= $naiyou."nn";
なぜ上記の部分ではシングルクォーテーション( ‘ )ではなく、ダブルクォーテーション( ” )で囲んでいるのかというと、
変数$honbunに格納する内容に改行コードを含めたかったからです。
改行コードはソース中のnの部分のことです。
nと改行コードをひとつ入れると一回改行します。
nnと改行コードをふたつ入れると二回改行します。
この改行コードをシングルクォーテーション( ‘ )で囲むと、単なる文字列として扱われてしまうため改行されません。
そこで、メール本文の作成箇所に限りダブルクォーテーション( ” )で囲むことしたというわけです。
尚、ダブルクォーテーション( ” )で囲んだ文字列のなかに変数が含まれる場合には、変数に格納されている内容が出力されます。
したがって、上記のソース部分は、以下のように書き換えても出力結果は同じとなります。
上記のソースとは、ダブルクォーテーション( ” )の位置が異なる点に注目してください。
サンプルソース:mailpost.phpの抜粋//メール本文の作成 $honbun = ''; $honbun .= "メールフォームよりお問い合わせがありました。nn"; $honbun .= "【お名前】n"; $honbun .= "$namaenn"; $honbun .= "【メールアドレス】n"; $honbun .= "$mailaddressnn"; $honbun .= "【お問い合わせ内容】n"; $honbun .= "$naiyounn";
今回で、「PHPでメール送信フォームを作る」は修了です。
お疲れさまでした。
次のページにソース全文があります。
<前へ | 目次へ | 次へ> |