Laravelでgmailを送信しようとしたらエラーが出て送信できなかったので
解決までの手順をメモしておく 

まずは設定

.envに設定を記述
gmailの場合
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=xxxxx@gmail.com
MAIL_FROM_NAME=xxxxx
MAIL_USERNAME=xxxxx@gmail.com
MAIL_PASSWORD=xxxxx
MAIL_PRETEND=false
config>mail.phpで.envの設定を参照するように修正

Tinkerコマンドで送信をテストする
$ php artisan tinker
>>>Mail::raw('Test Mail', function($message) { $message->to('xxxxxx@gmail.com')->subject('test'); });

ここでエラーが発生

Expected response code 250 but got code "535", with message "535-5.7.8 Username and Password not accepted. Learn more at 535 5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 wd7sm12843789wjc.36 - gsmtp "

調べると、ここでいうパスワードはアカウントのパスワードではないらしい。
gmail側で生成したアプリパスワードを指定するとのこと。

アプリパスワードを設定する

アプリパスワードは二段階認証を設定していないと「お探しの設定はお使いのアカウントでは利用できません。」と出て設定できない
二段階認証は以下から設定する

以下からアプリパスワードを設定する

セレクトボックスからその他を選ぶ
Screen_Shot_2017-05-04_at_14_36_30

アプリ名を入力
Screen_Shot_2017-05-04_at_14_36_38


アプリパスワードが生成されるので.envに入力する
Screen_Shot_2017-05-04_at_14_30_30


Tinkerコマンドで再度送信をテストする
$ php artisan tinker
>>>Mail::raw('Test Mail', function($message) { $message->to('xxxxx@gmail.com')->subject('test'); });


Tinkerを再起動するまではどんなに設定をいじっても反映されないので注意。

nullが帰って来れば送信できている。
Screen_Shot_2017-05-04_at_14_53_23