自身のLaravel学習の備忘録として。
Laravelにおいてメール送信機能はパスワードリマインダーなどで使用される。
パスワードを忘れてしまい、ログイン出来ないときにemailに再設定のメールを送るやつ。
以下の写真において,画面右上に「LOGIN」と「REGISTER」が表示されているように、すでにアプリケーションに認証機能を実装された状態。
#環境
macOS Catalina バージョン10.15.4
Laravel 5.8.38
#Gmail側の設定
以下のURLから設定。
https://myaccount.google.com/security
googleアカウントでは以下の設定を行う。
・「2段階認証プロセス」を「オン」にする
・「アプリパスワード」を設定する
「2段階認証プロセス」はスマートフォンのGoogleアプリを使うなどしてGoogleアカウントの認証を行う方法。
この設定をしないと次の「アプリパスワード」の設定が出来ない。
アプリパスワードの「アプリを選択」のプルダウンで「その他(名前を入力)」を選択し、アプリ名を入力する。
写真では「Laravel」となっているがアプリ名はわかりやすいものがいい。
「生成」ボタンを押すとアプリパスワードが表示される。
このパスワードをLaravelの設定ファイルに書き込む。
Laravelの.envを開き、以下の部分を修正。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
↓
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=****@gmail.com ← 自分のgmailのメールアドレス
MAIL_PASSWORD=**** ← アプリパスワード
MAIL_ENCRYPTION=tls
MAIL_PASSWORDには先ほど生成したアプリパスワードを入力。
ちなみにMAIL_PORTで指定した587という数字はSMTP(TLS/STARTTLS)のポート番号。
SMTP
SMTP(Simple Mail Transfer Protocol)とは、送信したメールを宛先のメールサーバーまで届ける技術のこと。
ユーザーがメールソフトウェア(例:Gmailなど)を使用してメールを送信すると、設定されているSMTPサーバーがメールを送信先のサーバーに配信します。
TLS
TLSとはSSLの次世代規格のことで、電子メールを暗号化することでプライバシーを保護するセキュリティプロトコルを指します。
STARTTLS
STARTTLSとは、メールの送受信を暗号化する方法です。送信サーバーから受信サーバーへのデータ通信を暗号化することにより、メール通信経路上の悪意のあるハッキングからメールを保護できます。
#動作確認
実際に「REGISTER」からアカウントを登録。試しに自身のgmailのアドレスで登録。メールが届き、ログイン状態になればOK。