サイトアイコンFronted Code

私の知識や、知ってたらよかったこと等が書いてあるブログです

2021/08/09

LaravelLaravelを使用したメール送信機能の作り方(gmail)

Laravel を使用したメール送信機能の作り方(gmail)

はじめに

パスワードリセット等、メール送信機能を使うケースがなにかと必要になると思います。

今回は私が実際にアプリを制作する際にしようしたメール送信機能の作り方について紹介していきたいと思います。

前提

  • 必要な物
    • Laravel プロジェクト
    • Google アカウント

Googleアカウント側の設定

始めに、Google アカウントの設定から始めていきたいと思います。

二段階認証有効

gmail を使用して、アプリのメールを送信するためには専用のパスワードが必要です。

そのためには先ず、google アカウントの二段階認証を有効にしてセキュリティを高める必要がありますが、「もうやってあるよ!」という方はこのセクションはスキップして頂いて構いません。

では、始めに二段階認証設定画面を開いて頂き、有効にする設定を行ってください。

  • 二段階認証手順一覧
    • 音声またはテキスト メッセージ
    • バックアップ コード
    • 認証システム アプリ
    • セキュリティ キー

これらの方法で認証できると思いますが、スマートフォンを持っている方は一番初めの「音声またはテキスト メッセージ」が最も手軽だと思われますのでこちらを推奨いたします。

アプリパスワード発行

二段階認証が有効になりましたら、.env に記載するためのアプリパスワードを発行します。

こちらのページから再度ログインして頂き、「アプリ」と「デバイス」を設定して頂きます。

今回はメール機能を有効にすることがゴールですから、アプリは「メール」でデバイスは任意で良いでしょう。

メールパスワード発行

発行に成功したらキーをコピー出来ると良いになると思いますので、これを必ず任意のファイルに保存してください。

後からコピーすることはできないため、実質的に一度のみの発行となります。

Laravel側の設定

お疲れ様です。最後に Laravel の設定をいじくって終了です。頑張りましょう。

envファイルの設定

始めに、プロジェクトの環境変数を設定する.env ファイルを変更します。

場所はルート直下にあるのですぐ見つかるかと思われます。

そして、下のほうに MAIL_から始まるメールに関する環境変数が設定されていますので、これを一気に変えちゃいます。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=あなたのメールアドレス
MAIL_PASSWORD=先ほど取得したアプリキー
MAIL_FROM_ADDRESS=あなたのメールアドレス
MAIL_FROM_NAME=プロジェクトの名前
MAIL_ENCRYPTION=tls
MAIL_PRETEND=false

MAIL_USERNAME と、MAIL_FROM_ADDRESS にはあなたのメールアドレスを入力して頂き、MAIL_PASSWORD には先ほど取得したアプリキーを代入します。MAIL_FROM_NAME はプロジェクト名です。

これで完成!…と言いたいところですがこれではエラーが発生してしまいます。mail.php ファイルも設定する必要があるようです。

mail.phpファイルの変更

最後は、./config/mail.php ファイルを開いて頂きます。

mail.php ファイルには.env に記載された変数とは別に設定が組み込まれていますので、こちらも先ほどと同様に設定していきます。

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'あなたのメールアドレス'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),

これで設定は完了ですが、最後にキャッシュクリアを行いましょう。

.env ファイルを変更した際には、それを反映させるためにキャッシュクリアという作業を行う必要があるので下記のコマンドをターミナルから実行しましょう。

php artisan:cache clear

これで Clear!と成功すれば完了です。パスワード再設定でも、何でもできます。

まとめ

いかがだったでしょうか

工程は面倒かもしれませんが、gmail があれば誰でも出来るのでコストはとても低いのでは無いでしょうか。

Laravel でメール機能を有効にするための手順を簡単にまとめるとこうなります

  • メール機能有効手順
    • 二段階認証を有効にする
    • アプリパスワードを発行する
    • .env ファイルの環境変数を書き換える
    • mail.php も書き換える
    • キャッシュクリアする

ではまた次の記事でお会いしましょう、では。