機能概要

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>

演習問題

  1. 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
  2. 前単元で学習した、ユーザー管理①サインアップなどで、新規登録したタイミングでメールが送信されるなど、機能を追加してみよう。