概要
メール送信機能を実装する際に、GoogleのSMTPサーバーを利用してLaravelからメール送信を行う方法について紹介します。これにより、メールサーバーを独自に構築せずに、手軽にメール送信機能を組み込むことができます。
初めはSendGridを検討しましたが、個人利用者が契約できないといった制約があったため、代わりにGoogleのSMTPサーバーを選択しました。
2段階認証を有効にする
まずGoogleアカウントを管理から下記のページまで移動します。
https://myaccount.google.com/security
2段階認証プロセスをクリックして画面に従って有効にしてください。
注意: 2段階認証を有効にしないと、メール送信ができないので注意が必要です。
アプリのパスワードを設定する
設定できない場合は、2段階認証を有効にしていない可能性があります。
[アプリパスワード] 設定ページから、アプリの名前(ここではLaravel)を入力します。
https://myaccount.google.com/apppasswords
すると下記のように16文字のパスワードが表示されます。
注意: アプリのパスワードは.envファイルに記述するため、慎重に管理してください。
.envに記述する
上記で設定した値で.env
を編集していきます。
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=自身のメールアドレス
MAIL_PASSWORD=16文字のパスワード
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="${MAIL_USERNAME}"
MAIL_ENCRYPTIOは、Laravelのメール機能がSMTPサーバーとの通信時に使用するセキュリティプロトコルを指定するための設定です。TLSを使用します。
MAIL_PORTには、GmailのSMTP(TLS)のポートである587を指定してください。
注意: MAIL_PASSWORDには、先程生成したアプリパスワードを貼り付けます。コピペ時に半角スペースが入らないように注意してください。
キャッシュをクリアする
.env
を編集したので古いキャッシュ(編集前の環境変数情報)をクリアして編集後の値を適用します。
$ php artisan cache:clear
これで、LaravelからGoogleのSMTPサーバーを利用してメール送信が可能になります。
参考