お問い合わせフォームからのメール送信が実装できたので書きます。

<img width="535" alt="スクリーンショット 2020-05-05 15.58.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139887/8ba2bf14-c32f-fcbd-5510-ede51e47449b.png">
ダンサーの傍、webデザインや制作、プログラミングをやってます。
4月〜はダンサー自粛中ですので自分の大道芸の方のLPをリニューアルしようと思いデザインとフォームの修正をはじめました。
デザインの方は、まだ途中ですが、とりあえず機能を実装を終わらせようと、せっかくなのでメールフォームから送信！ってできるようにするか〜と思い実装始めたらまんまとはまりまくりました。
##mb_send_mail関数ではgmailが届かない？？！
いろんな記事を読んで、「このままコピペして、変数さえ変更すれば簡単じゃ〜ん」と甘くみていたらもうエラーエラーの連続でした。
で、色々読んでいくとmail関数というものがあったり、その中でもSTMP送信？なにそれ？レベルだったのですが、私はXサーバーを借りて、それでやってるので、ここはどうやら関係なさそう。ちなみに私はこのあたりの知識が皆無なので割愛します。

[PHPのmb_send_mailでメールが届かない原因と特定のメールアドレスだけ届かない原因](http://www.promeshi.com/archives/2903)
##送信の流れ
本当は確認画面を表示して、そこから送信の流れに持って行きたかったのですが
最終的にはLP上のフォームに入力→送信ボタン→送信完了（送信内容を送信相手に受信させる）
という流れになりました。
index.php→send.php

##煩雑ですがこちらがコードです
```index.php
 <?php
        session_start();

        //クリックジャッキング対策
        header('X-FRAME-OPTIONS: SAMEORIGIN');

        // トークン生成
        if (!isset($_SESSION['token'])) {
            $_SESSION['token'] = sha1(random_bytes(30));
        }

        // HTML特殊文字をエスケープする関数
        function escape($str) {
            return htmlspecialchars($str,ENT_QUOTES,'UTF-8');
        }
    ?>

中略

            <div class="form">     
                <h2>Contact</h2>
                <p>お仕事のご依頼などこちらからお問い合わせください</p>
        
                <form action="functions/send.php" method="Post">      
                    <div class="form-title">
                        <dl>
                            <dt>お名前
                                <dd>
                                    <div>
                                        <input type="text" name="namedata"  placeholder="例) 花子" class="inputText namearea" required>
                                    </div>                              
                                </dd>
                            </dt>
                            <dt>
                                E-mail
                                <dd>
                                    <div>
                                        <input type="text" name="mailarea"  placeholder="例)info@gmail.com" class="inputText mailarea" required>             
                                    </div>
                                </dd>
                            </dt>
                            <dt>
                                お問い合わせ内容
                                <dd>
                                <textarea name="textboxdata" placeholder="お問い合わせ内容を入力" class="inputText textboxarea" required>
                                </textarea>
                                </dd>
                            </dt>
                        </dl>                       
                        <div class="makesurebox">
                            <input type="submit" class="btnStyle1" value="送信する" />
                        </div>                               
                        </div>
                    </form>
            </div>
```
form actionで次に送りたいsend.phpに飛ぶように
actionはpostです。
次にsend.phpです。最初は確認ページなども作っていたのでフォルダをfunctionsというのを作って入れています。なのでfunctions/send.phpを指定してます。

```functions/send.php
略
<body>
    <?php          
        header("Content-Type:text/html; charset=UTF-8"); 
        mb_language("Japanese");
        mb_internal_encoding("UTF-8");
        
        $to = "hogehogeinfo@gmail.com";
        $title = "お問い合わせがありました";

        // メール本文
        $message = "名前：" . $_POST["namedata"] . "\n本文：" . $_POST["textboxdata"];

            if (!mail($to, $title, $message, "From: " . $_POST["mailarea"])) {
            exit("error");
            }
     ?>  
        <!--送信完了ページの文言-->
        <div class="sendpg">
            <h4>送信完了しました</h4>
            <p>お問い合わせありがとうございました！</p>
            <div class="btnStyle3">
                <a href="../index.php">Topに戻る</a>
            </div>
        </div>       
    </body>
```
to は自分の受信させたいメールアドレス
title　はメールのタイトル

$messageにお問い合わせ元、メアド、名前といった最低必要条件のみ、とりあえず入れます。index.phpのフォームで入力された値をそのままぶち込みます（自分宛のメールだからとりあえず）

そのあとのmail関数ですが、ここがmb_send_mail関数だとエラーでメールが届かなかったところです。どうやらgmailがはねられてしまうらしい、、？この辺が謎なんですが。なのでmail関数で対応しました。

```
mail($to, $title, $message, "From: " . $_POST["mailarea"])
//自分のメアド、メールのタイトル、メール本文、送信元
```
この4つを入れて、今回はこれらが!な時はエラーを出す
という指定をしています。


PHPほとんど勉強したことがなくて、挙動がちょっとイマイチよくわかってないんですが（phpの問題ではないのか？）
mb_send_mail関数でつまずいている方はmail関数のこちらで試してみてください。
参考にさせていただいたのは以下の記事です、こちらはmb_send_mailを使ってますが、ここをmail関数に変更しました。
↓
[メールの送信](http://www.php-labo.net/tutorial/php/mail.html)
[メールを送信 - mail()、mb_send_mail()](https://webkaru.net/php/function-mail/)

結構、意味がわからないところがたくさんありすぎて、PHPちゃんと勉強してみようかなと思いました。Twitterで泣き言をよく呟いてます。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">自分の大道芸のHPのメールフォーム送信、mail関数で手こずってて、やっと解決した〜〜本当にやりたかった挙動にはならなかったので、ここは各々改善するとして。qiitaに記事書こう。モチベーションが保てたのは、「作ってるやつは人間なんだから私にだってできるはず。」<a href="https://twitter.com/hashtag/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0?src=hash&amp;ref_src=twsrc%5Etfw">#プログラミング</a></p>&mdash; Yumiko@ミニマリスト東京滞在中 (@engineerman8) <a href="https://twitter.com/engineerman8/status/1255462348242014209?ref_src=twsrc%5Etfw">April 29, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>