CekePHP5でメール送信したら
“Could not send email: unknown”
という謎のメッセージが出る。
原因
EmailTransportのclassNameの設定を確認する。
app.php(もしくはapp_local.php)のEmailTransportの設定を見ると
'EmailTransport' => [
'default' => [
'className' => MailTransport::class,
/*
* The keys host, port, timeout, username, password, client and tls
* are used in SMTP transports
*/
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
/*
* It is recommended to set these options through your environment or app_local.php
*/
//'username' => null,
//'password' => null,
'client' => null,
'tls' => false,
'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
],
],
といった感じに書いてあるのだが、ここclassNameをSmtpかMailにする必要があるようです。
外部のSMTPサーバーで接続する場合はSmtp
PHPのメーラーを使う場合はMailを設定する。
CakePHP3ぐらいのときから同じだと思いますが、いまいちわかりにくい設定なので、いつも忘れてしまう。。