目的
- Laravelアプリからのメール送信で非常に詰まったため実施方法をまとめる
追記(2023/05/28)
- 別の環境ですが、laravel10の環境でも本方法でtinkerからメールを送れることを確認しました。
実施環境
- ハードウェア環境(下記の二つの環境で確認)
項目 | 情報 |
---|---|
OS | macOS Catalina(10.15.3) |
ハードウェア | MacBook Pro (16-inch ,2019) |
プロセッサ | 2.6 GHz 6コアIntel Core i7 |
メモリ | 16 GB 2667 MHz DDR4 |
グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |
- ソフトウェア環境
項目 | 情報 | 備考 |
---|---|---|
PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
Laravel バージョン | 7.0.8 | commposerを用いて導入 |
MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |
前提情報
- Dockerなどを使用せず、直接MacにLaravelの開発環境を構築して作業を行っている。自分の環境の構築方法を下記に記載する。
- Gmailを用いたメールの送信を行う。
説明後の着地点
- 当該laravelアプリのtinker上からコマンドにより指定したメールアドレスへのメール送信を行うことができる。
概要
- Googleアカウントの取得と設定
- Laravelアプリ側でのメール設定
- 確認
詳細
- Googleアカウントの取得と設定
- メールを送信するGoogleアカウントを作成する後ログインする。すでに持っているアカウントで送信を行う場合はログインする。
- 先にログインしたGoogleアカウントのGmailアドレスとパスワードを記憶しておく。
- 下記の方法で安全性の低いアプリのアクセスを有効にする。
- Laravelアプリ側でのメール設定
-
メール送信を実装したいアプリのアプリ名ディレクトリまでターミナルで移動する。
-
アプリ名ディレクトリで下記コマンドを実行して設定ファイルを開く。
$ vi .env
-
開いた設定ファイルの26行目付近に下記の様な記載がある事を確認する。
アプリ名ディレクトリ/.envMAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}"
-
先の設定ファイルのメールの設定部分を下記の様に修正する。
アプリ名ディレクトリ/.envMAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=安全性の低いアプリのアクセスを有効にしたGoogleアカウントのgmailアドレス MAIL_PASSWORD=安全性の低いアプリのアクセスを有効にしたGoogleアカウントのログインパスワード MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=安全性の低いアプリのアクセスを有効にしたGoogleアカウントのgmailアドレス MAIL_FROM_NAME=メール差出人の名前(任意のものを入力する)
-
筆者の環境での当該記載の例を下記に記載する。(パスワードのみ伏せる)
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=laravel.mail.0104@gmail.com MAIL_PASSWORD=************* MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=laravel.mail.0104@gmail.com MAIL_FROM_NAME=demo-laravel-crud
-
.envファイルを保存して閉じる。
-
- 確認
-
アプリ名ディレクトリにて下記コマンドを実行する。
$ php artisan tinker
-
tinkerで下記を実行してテストメールを送信する。(下記のそのままコピーして実行してもエラーになる。「テストメール送信先アドレス」には皆さんの環境にあったメールアドレスを入力して実行してください。)
>>> Mail::raw('test mail', function($message) {$message->to('テストメール送信先アドレス')->subject('Test');}); => null
-
テストメール送信先の受信ボックスを確認して下記の様なメールが届いていればメール送信の設定は完了である。(送信元名前と送信元アドレスはみなさんとは異なる)
-