認証機能のうちユーザー登録にメール確認を行うことができるようなので
予めメール送信の設定を行う。
メール設定
.envファイルかconfig/mail.phpで行う。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.hoge.com
MAIL_PORT=587
MAIL_USERNAME=hoge.admin@example.com
MAIL_PASSWORD=(パスワード)
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=hoge.admin@example.com
MAIL_FROM_NAME="hoge admin"
以下のコマンドでテスト送信。nullが変えればOK。
$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.2.20 ? cli) by Justin Hileman
>>> Mail::raw('Test Mail', function($message) { $message->to('hoge@example.com')->subject('TEST Title'); });
=> null
>>>
gmail等の場合、MAIL_ENCRYPTION=null
をtls
にする必要があるが環境によっては
PHP Warningとなる。
$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.2.20 ? cli) by Justin Hileman
>>> Mail::raw('Test Mail', function($message) { $message->to('hoge@example.com')->subject('TEST Title'); });
PHP Warning: stream_socket_enable_crypto(): Peer certificate CN=....
>>>
sslの厳密な検証を行うと証明書がドメインに含まれてないからエラーとなっている模様。
以下の設定を追加するとWarningを無視する。
config/mail.php
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
参考URL
How to deal with self-signed TLS certificates in Laravel's SMTP driver?