PHPが動作しているサーバから、直接メールを送信する仕組みです。
機能概要
注意点
この送信の仕組みは、送信先のサーバから「迷惑メール(スパムメール)」として認識される可能性が高い方法となります。また、メール送信プログラムは、サーバによって異なりますが、既定の時間内で送信できるメールの数が決められている場合があります。
このメールの仕組みがハッキングされないように注意が必要です。
プログラミングコード
「mail-form.php」メールフォームページファイル
- 10行目:「mail_send.php」にフォームの値を送信します。。
- 12・14・16行目:テキストボックスを用意し、送信する内容を入力してもらいます。
- 17行目:「submit」でフォームを送信します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<p>
<h2>メール送信フォーム</h2>
</p>
<form action="mail-send.php" method="post">
<p>送信先メールアドレス</p>
<input type="text" name="to">
<p>メールのタイトル</p>
<input type="text" name="title">
<p>本文</p>
<textarea name="content" cols="50" rows="5"></textarea>
<p><input type="submit" name="send" value="送信"></p>
</form>
</body>
</html>
「mail-send.php」メール送信ページファイル
- 8行目:「mb_language(“Japanese”)」は、現在の言語を取得もしくは設定します。(詳細はこちら)
- 9行目:「mb_internal_encoding(“UTF-8”)」は、文字コードを指定します。ここは重要で文字化けする場合には、その言語に併せたものに変更が必要です。
- 10~12行目:「前のページ」から受け取った値を変数に代入します。今回は、送信先「to」、件名「title」、本文「content」となります。
- 14~21行目:「メールヘッダー」を作成します。
- 23~26行目:「送信内容」を画面上に表示します。
- 28行目:mb_send_mail($to, $title, $content, $header)で、メール送信します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<?php
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$to = $_POST['to'];
$title = $_POST['title'];
$content = $_POST['content'];
$header = "MIME-Version: 1.0\n";
$header .= "Content-Transfer-Encoding: 7bit\n";
$header .= "Content-Type: text/plain; charset=ISO-2022-JP\n";
$header .= "Message-Id: <" . md5(uniqid(microtime())) . "@test.com>\n";
$header .= "from: test@test.com\n";
$header .= "Reply-To: test@test.com\n";
$header .= "Return-Path: test@test.com\n";
$header .= "X-Mailer: PHP/". phpversion();
echo '$to:'.$to."<br>";
echo '$title:'.$title."<br>";
echo '$content:'.$content."<br>";
echo '$header'.$header."<br>";
if(mb_send_mail($to, $title, $content, $header)){
echo "メールを送信しました";
} else {
echo "メールの送信に失敗しました";
}
?>
<br>
<a href="mail-form.php">フォームに戻る</a>
</body>
</html>
演習問題
- 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
- 前単元で学習した、ユーザー管理①サインアップなどで、新規登録したタイミングでメールが送信されるなど、機能を追加してみよう。