質問: 現在、Laravel5.1にて、 会員登録時にメールを送信 →登録者が送られてきたメールのリンクをクリックして会員登録完了 という機能を実装しようとしているのですが、うまくいきません。 ### 環境 OS:windows8.1 エディター:atom xamppをつかってPHPとMysqlを動かしています。 ### エラー内容 メールをLaravel側から送信すると、 **Swift_TransportException with message 'Connection could not be established with host smtp.gmail.com** というエラーが帰ってきます。 ### 試したこと ・グーグルアカウントの設定にて安全性の低いアプリからのアクセスを許可 ・グーグルのアプリパスワードを使ってログイン ・ポートを587に変更して送信 ・MAIL_ENCRYPTIONをsslではなくtlsに変更して送信 ### コード .envファイル ``` MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=〇〇〇〇@gmail.com(送信者アドレス) MAIL_FROM_NAME=送信者名 MAIL_USERNAME=〇〇〇〇@gmail.com(送信者アドレス) MAIL_PASSWORD=アプリパスワード MAIL_PRETEND=false ``` mail.phpファイル ``` return [ 'driver' => env('MAIL_DRIVER', 'smtp'), 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', null), 'name' => env('MAIL_FROM_NAME', null) ], 'encryption' => env('MAIL_ENCRYPTION', 'null'), 'username' => env('MAIL_USERNAME', null), 'password' => env('MAIL_PASSWORD', null), 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => env('MAIL_PRETEND', false), ]; ``` ### 補足 MAIL_PRETENDをtrueにして、実際にはメールを送信せずにテストした際は、問題なくプログラムが走っているようなログが帰ってきたため、ソースコード自体には問題はないのでは...?と思います。 また、一時期問題なく送信できていたのですが、突然こういったエラーがでるようになってしまいました。 これもなにか理由があるのでしょうか...? ご回答お待ちしております。よろしくお願いいたします。
回答: ローカルの開発環境でメール送信がうまくいかない場合は、問題をより単純化するためにローカルでダミーのメールサーバーを立てられるMailCatcherやMailHogを使うことを検討してもよいかと思います。 mailcatcher を使ってローカル環境のWebでメール送信テストをする sj26/mailcatcher mailhog/MailHog