[PHP]入力フォーム⑤ フォームが送信されたらメールが届くようにする
フォームが送信されたらメールが届くようにする
メールを送る関数
mb_send_mail()
mb_send_mail(’①メールアドレス’,’②メールの表題’,’③メールの内容’)
①通知してほしいメールアドレス。
②お知らせメールの件名
③お知らせメールの本文。ここに入力したものがお知らせメールの本文になる。
関数を入れることもできる。
入力フォームの内容を表示させたい場合や、文章を定型文にしたい場合は
「ヒアドキュメント」を使うと実現できる。
ヒアドキュメント(heredoc)
メールの本文のヒアドキュメントをつくり、お知らせメールに乗るようにします。
まず、お知らせメールを送る命令文
mb_send_mail('xxx@xxx.com','お問い合わせがありました','$body');
$bodyの内容をヒアドキュメントで成形
$body=<<<EOF
お問い合わせが送信されました。
送信者のお名前:{$name}
メールアドレス:{$email}
内容は以下の通りです。
{$msg}
EOF;
※EOF=End of File ※緑色の文字の部分がヒアドキュメントの範囲
開始と終わりの文字列は他のものでもよい。ただし同一の文字列でなければならない。
ヒアドキュメントとお知らせメールの命令文は、send.phpのPHPコードの最後に書く。
ここまでのファイルの内容
【send.php】
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>入力確認画面</title>
<?php
if( !isset($_POST['name'])||!isset($_POST['email'])||!isset($_POST['msg']) ){
header('Location:./index.php');
exit;
}
$name = $_POST['name'];
$email = $_POST['email'];
$msg = $_POST['msg'];
session_start();
$_SESSION['name'] = $_POST['name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['msg'] = $_POST['msg'];
$body=<<<EOF
お問い合わせが送信されました。
送信者のお名前:{$name}
メールアドレス:{$email}
内容は以下の通りです。
{$msg}
EOF;
mb_send_mail('xxx@xxxxx.com','お問い合わせがありました','$body');
?>
</head>
<body>
<h1>入力内容確認画面</h1>
<table>
<tr><th>お名前:</th><td><?php echo htmlspecialchars($name, ENT_QUOTES,'UTF-8'); ?></td></tr>
<tr><th>メールアドレス:</th><td><?php echo htmlspecialchars($email, ENT_QUOTES,'UTF-8'); ?></td></tr>
<tr><th>お問い合わせ内容:</th><td><?php echo htmlspecialchars($msg, ENT_QUOTES,'UTF-8'); ?></td></tr>
</table>
<p><a href="send.php">送信する</a></p>
</body>
</html>