Xamppのsendmailとgmailでメール送信フォームを作りましょ


gmailの二段階認証をクリアしてメールフォームを作りましょ

こんにちは~
初めての投稿になります。
Qiitaはじめの一歩ということでgmailを活用したメールフォームの作り方を解説します。
あれ~言いつけ通りに作ったのに送信できなーいという初心者の方がきっといると思いまして、簡潔にまとめたいと思います。
ググると数多くの参考になる投稿があるので、ここではあまり細かい技術解説は行いません。
理屈を知りたい方は他を参考にしてください。(星の数ほど出てきます。)
ただ二段階認証のクリア方法まで一気通貫で書かれているサイトが無いので、
コピペでできる簡潔な解説で初心者の皆様にご参考になれば幸いでございます。

メールフォーム(HTML)
<form method="post" action="./mail.php">
    <input type="text" name="name" placeholder="Name" >
    <input type="email" name="email" placeholder="Email" >
    <textarea name="message" placeholder="Message" rows="6"></textarea>
    <input type="submit" value="Send Message" >
</form>

次にmail.php。ご自分の環境に書き換えてお使いください。

メール送信スクリプト(PHP)
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php
            mb_language("Japanese");
            mb_internal_encoding("UTF-8");
            $name = $_POST['name'];
            $email = $_POST['email'];
            $message = $_POST['message'];
        if (mail("[email protected]",$name, $message,$email))
        {
        echo "メールが送信されました。";
        } else{
        echo "メールの送信に失敗しました。";
        }
        ?>
    </body>
</html>

php.iniでmail functionを検索して以下の項目だけ修正します。

php.iniの編集
[mail function]
SMTP=localhost //localhostのままでOKです。
smtp_port=587 //サブミッションポートを登録します。
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" //sendmail.exeのパスを登録します。

ここまでは多くのサイトで説明されている通りです。
そしてこのままsendmail.iniを登録していざテストとなると、あれ?送信できないってなると思います。
安全性の低いアプリのアクセスをブロックしましたとGoogle様から拒否されてしまうのです。
でこれを回避するにはどうすればよいかと右往左往していると、「安全性の低いアプリを許可すれば良いのですよ」と悪魔の囁きをするサイトに出くわしたりするのです。
危ない危ない。
それはやっちゃダメです。
sendmailを安全性の高いアプリにしてあげればよいのです。
ではその手順をご紹介しましょう。

まずはGoogle様にログインします。
アカウントの編集画面からセキュリティを選択します。

ここで二段階認証プロセスをオフになんて絶対しちゃいけません。
そのすぐ下にアプリパスワードというのが控えめにありますのでこいつをクリックします。
またログイン認証を求められると思います。
今ログインしたパスワードが表示された状態でアプリパスワードの画面が開きます。

ここでアプリ選択をメール、デバイスはその他を選んでsendmailと名前を付けてやってください。
するとなんということでしょう!
sendmail専用のパスワードが発行されるのです。

発行されたパスワードをコピーしてください。
はいあとは最後にsendmail.iniを編集して終わりです。
auth_passwordに先ほど生成されたパスワードを登録してください。

sendmail.iniの編集

smtp_server=smtp.gmail.com //smtp.gmail.comを登録します。
smtp_port=587 //サブミッションポートを登録します。
[email protected] //送信用のgmailアドレスを登録します。
auth_password= xxxxxxxxx //アプリパスワードを取得して登録します(ここ最重要!)

はいここまで来たらApacheを再起動しましょう。
そして作ったサイトを呼び出してフォームから何か送信してみてください。
無事二段階認証を乗り越えてメールが送信されましたか?
なんでやねんなんでやねんなんでやねんと悩んでいたあなたこれで解決です。

そうそう、ファイアウォールのポートも忘れずに開けてくださいねーーー

以上初心者が初心者向けに書いた記事でした。
ベテランの方々は笑ってフォローをお願いします。