4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CakePHP4でメール送信

Last updated at Posted at 2020-03-22

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');
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?