Laravel提供の Vagrant環境Homestead で作成したアプリケーションを、AWS EC2にて本番稼働する際、メールの送信のみがうまく動かず、解決できずにおります。
[主な環境]
- Laravel 5.2
- Amazon Linux on EC2
- Nginx 1.8
- PHP 7.0.3
- PHP fpm
その他、sendmail等は Amazon Linux に最初から入っているもの。
sendmailのサービスが起動してるのは確認済。
[Laravel上での問題]
Mail::rawでは送信されますが、Mail::send、Mail::queue、Mail::laterのいずれもブラウザの画面は真っ白になります。
(sendとqueueやlaterメソッドの違いはわかっております、試しにやってみてもダメだったということで)
これらの実行文をコメントアウトすると次に進んでいるので、send、queue、later内で止まっていると思われます。
Mail::rawを使うとメールが送信され、正常終了しています。
また、php artisan tinker
にて
>>> Mail::raw('Test', function($message) { $message->to('メアド')->subject('test'); });
で試すと 1 が返ってきて実際に送信されることを確認できました。
Laravelのログ、NginxやPHPのエラーログには何も出力されておりません。
.env では MAIL_DRIVER=smtp
のままで、外部の SMTPサーバ(gmail) を使っています。
SMTPの設定は、smtp.gmail.com、465ポート、SSLなどを指定し、AWS以外の開発環境ではメール送信できております。
[ご相談]
本番環境にデバッグ用の改変をグリグリと入れてしまうのにやや抵抗があるので、直接の解決にならなくとも、ヒントを探せればと思っています。
rawメソッドで送れて、sendメソッドで止まっているのですが、MTA(sendmail)の問題...でしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。