PHPでメール送信を実装する方法
PHPを使って簡易メールフォームを作成したので、作り方をまとめておきたいと思います。
今回作成したのは入力した内容を、一度確認画面で表示して送信するタイプのメールフォームです。
作り方
役割ごとに3つのファイルを作成します。
- mail.php → メールを作成するフォームを表示する画面。
- confirm.php → 入力した内容を確認する画面。
- complete.php → メールの送信結果を表示する画面。
mail.php
メールの内容を入力するためのフォーム画面を作成します。下記のコードをファイル名「mail.php」で保存します。
入力フォームは「宛先」「件名」「本文」を用意しました。
<!DOCTYPE html> <html> <head> <title>Sample Mail</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div> <form method="post" action="confirm.php"> <p>宛先 <input type="text" name="to" /></p> <p>件名 <input type="text" name="title" /></p> <div> <textarea name="content" rows="4" cols="40">ここにメールの本文</textarea> </div> <input type="submit" name="send" value="送信内容を確認" /> </form> </div> </body> </html>
<form method="post" action="confirm.php">
のaction
に確認画面のファイルを記入します。
confirm.php
送信する内容を確認する画面を作成します。下記のコードをファイル名「confirm.php」で保存します。
<?php $to = $_POST['to']; $title = $_POST['title']; $content = $_POST['content']; ?> <!DOCTYPE html> <html> <head> <title>Sample Mail</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div> <p>宛先 <?php echo $to; ?></p> <p>件名 <?php echo $title; ?></p> <p><?php echo $content; ?></p> </div> <form method="post" action="complete.php"> <input type="hidden" name="to" value="<?php echo $to; ?>"> <input type="hidden" name="title" value="<?php echo $title; ?>"> <input type="hidden" name="content" value="<?php echo $content; ?>"> <input type="submit" name="send" value="送信" /> </form> </div> </body> </html>
入力された値を、それぞれを$to$title$content
の変数に格納して表示しています。
input
のtype属性にhidden
を指定することで、送信する値を表示せずに保持しています。
complete.php
メールを送信して、送信の結果を表示する画面を作成します。下記のコードをファイル名「complete.php」で保存します。
<?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $to = $_POST['to']; $title = $_POST['title']; $content = $_POST['content']; $message = "送信エラー"; if(mb_send_mail($to, $title, $content)){ $message = "メールを送信しました"; } else { $message = "メールの送信に失敗しました"; }; ?> <!DOCTYPE html> <html> <head> <title>Sample Mail</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div> <p>送信結果 < <?php echo $message; ?></p> </div> </body> </html>
mb_send_mail
でメールの送信を行います。
さらに、if文でmb_send_mail
の結果がTRUEであれば「メールの送信が完了しました」、入力漏れなどによって結果がFALSEになった場合は「メールの送信に失敗しました」と出力されるように設定しています。
実際に送信して、結果が表示されれば完成です。
今回は、POSTを使った値の受け渡しの部分をピックアップして書きました。 一応このままでも動作しますが、ここに入力チェックやセキュリティー対策も追加する必要があります。