問題
-
Laravel
でメール送信しようとしたら**Swift_TransportException
**というエラーが発生した。 - **
Authenticator LOGIN returned Expected response code 235 but got code "534"
**が発生した。
自分は上記の両方を認証機能のパスワード再発行の際に発生した。
それらを解決できたので、その方法を記載する。
解決策
今回はGmail
を利用した解決策を書いていく。
.env
まずは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段階認証ではエラーが解消しなかったが、アプリパスワードの設定によって解消できた。
アプリパスワードが発行されたら、.env
のMAIL_PASSWORD=
に入力する。
キャッシュの削除
今のままだとLaravel
の変更前の設定ファイルの記録などが残っているため、**$ php artisan config:cache
**をターミナルで実行しそれらを削除する。
以上の作業が終わったら、自分が操作したいメール送信機能を試してみる。