CakePHP4のドキュメント
https://book.cakephp.org/4/en/core-libraries/email.html
を参考に、以下のコードでメールを送信しようとしたところ、
$mailer = new Mailer('default');
$mailer->setFrom(['me@example.com' => 'My Site'])
->setTo('you@example.com')
->setSubject('About')
->deliver('My message');
以下のエラーとなった。
2020-03-22 16:02:04 Error: [InvalidArgumentException] Unknown email configuration "default". in /var/www/example/vendor/cakephp/cakephp/src/Mailer/Mailer.php on line 411
Stack Trace:
- /var/www/example/vendor/cakephp/cakephp/src/Mailer/Mailer.php:208
- /var/www/example/src/Controller/CategoriesController.php:30
- /var/www/example/vendor/cakephp/cakephp/src/Controller/Controller.php:524
- /var/www/example/vendor/cakephp/cakephp/src/Controller/ControllerFactory.php:79
- /var/www/example/vendor/cakephp/cakephp/src/Http/BaseApplication.php:229
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:77
- /var/www/example/vendor/cakephp/authentication/src/Middleware/AuthenticationMiddleware.php:124
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:73
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:77
- /var/www/example/vendor/cakephp/cakephp/src/Http/Middleware/CsrfProtectionMiddleware.php:132
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:73
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:58
- /var/www/example/vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php:162
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:73
- /var/www/example/vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php:68
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:73
- /var/www/example/vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php:118
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:73
- /var/www/example/vendor/cakephp/debug_kit/src/Middleware/DebugKitMiddleware.php:60
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:73
- /var/www/example/vendor/cakephp/cakephp/src/Http/Runner.php:58
- /var/www/example/vendor/cakephp/cakephp/src/Http/Server.php:90
- /var/www/example/webroot/index.php:40
Request URL: /
Referer URL: https://dev.example.com/
Client IP: 10.100.0.1
EMailのConfigが読めていない様子。
CakePHPのIssueを調査したところ、
CakePHP3.8から4にバージョンアップしたらメールが送信できなくなった旨が報告されていた。
https://github.com/cakephp/cakephp/issues/14152
↑のIssueを参考に以下のように実装したところ、メールを送信することができた。
TransportFactory::drop('default');
TransportFactory::setConfig(Configure::consume('EmailTransport'));
$mailer = new Mailer();
$mailer->setTransport('default')
->setFrom(['me@example.com' => 'My Site'])
->setTo('you@example.com')
->setSubject('About')
->deliver('My message');