Laravelのメール送信テストで、Swift_TransportException with message・・・みたいなエラーが出た経験は誰もが一度はあるはず?
その場合はたいてい「.env」ファイルの設定が間違っているケースが多いです。
そこでこのページでは、Laravelのメール送信処理をGmailを使って行うための設定方法について解説します。
.envの設定内容
Gmailを利用して、メールを送信する場合 .envの設定は次のようになります。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=あなたのメールアドレス
MAIL_PASSWORD=2段階認証の設定時に発行されるパスワード //注意!
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=あなたのメールアドレス
MAIL_FROM_NAME=あなたの名前・担当者名など
これで送れるようになります。
ここで注意しないといけないのは、「MAIL_PASSWORD」が2段階認証の設定時に発行されるパスワードであるということです。
もし、Gmailにログインするためのパスワードを設定している場合はエラーになります。
Gmailの2段階認証の設定方法
認証の設定はGoogleアカウントのセキュリティ画面からできます。
Googleカウントにアクセスすると、メニュー欄に「セキュリティ」という項目があるので、こちらをクリックします。
セキュリティ画面に「Google へのログイン」という項目があるので、この中の「2段階認証プロセス」をクリックします。
もし、この項目が「オン」になっている場合は、すでに設定済みなので対応不要です。
「使ってみる」をクリックします。
ログイン画面が表示されるので、ログインします。
「今すぐ送信」ボタンをクリックします。
Googleからスマホにメッセージが送られてくるので、スマホ側で「はい」をクリックします。
バックアップの方法を設定します。
あなたの電話番号を入力して、「送信」をクリックしてください。
あなたの番号宛に確認コードが送られてくるので、そのコードを入力し「次へ」をクリックします。
最後に、2段階認証プロセスを有効にします。
「有効にする」をクリックしてください。
以上で、2段階認証プロセスの有効化できました。
次に.envファイルに設定するパスワードを取得します。
アプリパスワードの取得
パスワードを取得するために「アプリ パスワード」をクリックします。
パスワード生成画面が開くので、「アプリを選択」では「メール」を、「デバイスを選択」では「その他」を選びます。
「その他」を選ぶと名前の入力が必要なので、適当に名前をつけて「生成」をクリックします。
これで、パスワードが取得できました。
このパスワードを.envの「MAIL_PASSWORD」に設定すると、メールが送れるようになります。
メールがうまく送信できず困っている方は試してみてください。