LoginSignup
0
2

More than 3 years have passed since last update.

LaravelでSwift_TransportExceptionが発生した時の対処法(Gmail編)

Posted at

問題

  • Laravelでメール送信しようとしたらSwift_TransportExceptionというエラーが発生した。
  • Authenticator LOGIN returned Expected response code 235 but got code "534"が発生した。

自分は上記の両方を認証機能のパスワード再発行の際に発生した。
それらを解決できたので、その方法を記載する。

解決策

今回はGmailを利用した解決策を書いていく。

.env

まずはenvファイルの設定を確かめる。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=laravel@admin.com(適当なメールアドレス)
MAIL_FROM_NAME=Admin(適当な名前)
MAIL_USERNAME=(自分が利用しているGmailアドレス)
MAIL_PASSWORD=
MAIL_PRETEND=false

MAIL_PASSWORDの所に何も記入されていないが後で記入する。

config/mail.php

config/mail.phpを次のように書き換える。
既に記入されていたコードはコメントアウトなどで保存。

config/mail.php
// Mail Driver
'driver' => env('MAIL_DRIVER', 'smtp'),

// SMTP Host Address
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),

// SMTP Host Port
'port' => env('MAIL_PORT', 587),

// Global "From" Address
'from' => [
    'address' => env('MAIL_FROM_ADDRESS', null),
    'name' => env('MAIL_FROM_NAME', null)
],

// E-Mail Encryption Protocol
'encryption' => env('MAIL_ENCRYPTION', null),

// SMTP Server Username
'username' => env('MAIL_USERNAME', null),

// SMTP Server Password
'password' => env('MAIL_PASSWORD', null),

// Sendmail System Path
'sendmail' => '/usr/sbin/sendmail -bs',

// Mail "Pretend"
'pretend' => env('MAIL_PRETEND', false),

Googleのセキュリティ設定

下記のサイトを参考にGoogleアカウントの2段階認証、またはアプリパスワードの設定を行う。
【laravel】メール(gmail)がエラーで送信出来ない問題 | 旅行好き・WEBエンジニアのブログ

自分は2段階認証ではエラーが解消しなかったが、アプリパスワードの設定によって解消できた。

アプリパスワードが発行されたら、.envMAIL_PASSWORD=に入力する。

キャッシュの削除

今のままだとLaravelの変更前の設定ファイルの記録などが残っているため、$ php artisan config:cacheをターミナルで実行しそれらを削除する。

以上の作業が終わったら、自分が操作したいメール送信機能を試してみる。

参考資料

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2