PHPで作るメールフォーム

PHPで作るメールフォームです。
今回はデータベースには値をpostせず、入力されたデータをただメールで送信するだけのシンプルなもの。
自信ないのであんまり使わない方がいいかも。またリベンジしたいです。
※サーバーによっては動かなかったり、文字化けしたりします。

contact.php

<form id="mailform" action="thanks.php" method="POST"  name="form1" accept-charset="UTF-8">
    <table>
        <tr>
          <th>お名前<span class="text_red">※</span></th>
          <td><input type="text" id="name" name="name"  required / ></td>
        </tr>
          <tr>
            <th>フリガナ<span class="text_red">※</span></th>
            <td>
                <input type="text" id="kana" name="kana" required/ >
            </td>
        </tr>
        <!-- 中略-->
    </table>
</form>

formのaccept-charseを指定することで、入力された値を指定の文字コードでPOSTすることができます。
※サーバーによってはこれが効かないものもあるので注意(デラ○ストとか)

thanks.php(メール自動送信部分)

        <?php
        // 文字コードを合わせます
        header("Content-type: text/html; charset=UTF-8");
        mb_language("ja");
        mb_internal_encoding("UTF-8");
        mb_http_output("UTF-8");
        ob_start("mb_output_handler");

        // お問合わせフォームで入力した値をPOSTで持ってきます
        $name =$_POST['name'];
        $kana =$_POST['kana'];

        $zip01 =$_POST['zip01'];
        $pref01 =$_POST['pref01'];
        $addr01 =$_POST['addr01'];
        $addr3 =$_POST['addr3'];
        $addr4 =$_POST['addr4'];

        $tel =$_POST['tel'];
        $email =$_POST['email'];
        $old =$_POST['old'];
        $contact =$_POST['contact'];

        // メール自動送信テンプレ
        $post_deta ="\n\nお名前:" . $_POST["name"].
        "\nフリガナ:" . $_POST["kana"].
        "\n住所:"."〒". $_POST["zip01"].
        "\n". $_POST["pref01"].$_POST["addr01"].$_POST["addr3"].$_POST["addr4"].
        "\n電話番号:" . $_POST["tel"].
        "\nメールアドレス:" . $_POST["email"].
        "\n年齢:" . $_POST["old"]."歳".
        "\nお問い合せ内容:" . $_POST["contact"];

        $message_shomei ="\n\n──────────────".
        "\nこのメールに心当たりの無い場合は、お手数ですが".
        "\n下記連絡先までお問い合わせください。".
        "\nこの度はお問い合わせ重ねてお礼申し上げます。".

        "\n\n━━━━━━━━━━━━━━".
        "\n 株式会社○○".
        "\n URL:○○".
        "\n TEL:000-0000-0000".
        "\n━━━━━━━━━━━━━━";

        // 入力者に確認メール
        $message_1 = $_POST["name"]."様"."\nこの度はお問合せ頂き誠にありがとうございました。";
        
        $send1 = "From:" .mb_encode_mimeheader("株式会社○○") ."<dummy1@test.jp>";

        if (!mb_send_mail($_POST["email"], "お問い合せありがとうございました", $message_1.$post_deta.$message_shomei, $send1)) {
          exit('エラーが発生しました。'."<br>".'ブラウザバックでお戻りになり、もう一度送信ボタンを押してください。');
        }

        //  管理者に確認メール
        $message_2 = "お問い合せフォームより以下のメールを受付ました。";

        $send2 = "From:" .mb_encode_mimeheader("株式会社○○") ."<dummy2@test.jp>";

        if (!mb_send_mail("dummy@test.jp", "株式会社○○お問合せフォームより", $message_2.$post_deta.$message_shomei,$send2)) {
          exit('エラーが発生しました。'."<br>".'ブラウザバックでお戻りになり、もう一度送信ボタンを押してください。');
        }
        ?>

サーバーによっては文字コードの指定が出来ない場合があります。(某サーバーではサーバー内の言語がEUC-JPで、しかもPOSTしたデータを強制的にEUC-JPに変換されたので文字化けしました)

  • コーダーのための計算機