config/app.php
config/app.php に設定する場合は
https://book.cakephp.org/3.0/ja/core-libraries/email.html#id4
// サンプル SMTP 設定 Email::configTransport('gmail', [ 'host' => 'ssl://smtp.gmail.com', 'port' => 465, 'username' => 'my@gmail.com', 'password' => 'secret', 'className' => 'Smtp' ]);
に記載がされています。
また、実際の例としては
http://qiita.com/frost_star/items/4a56cec1f5de5eccbd09#%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%E8%A8%AD%E5%AE%9A
も参考になります。
ただ、開発段階ではこのファイルはバージョン管理されないため、docker-composeに環境変数を設定して使いまわすほうが便利です。
EMAIL_TRANSPORT_DEFAULT_URL
環境変数として設定する場合には
https://book.cakephp.org/3.0/ja/development/configuration.html#id28
にあるように、EMAIL_TRANSPORT_DEFAULT_URL を設定をします。Gmailの場合には以下のような感じで設定します。
EMAIL_TRANSPORT_DEFAULT_URL: "smtp://Gmailアカウント:パスワード@smtp.gmail.com:587?tls=true&client=null&timeout=30&transport=Smtp"
ホストとポートの組み合わせとしては以下の2つのいずれかを選択する形となります。
'host' => 'smtp.gmail.com', 'port' => 587, 'tls' => true
'host' => 'ssl://smtp.gmail.com', 'port' => 465, 'tls' => null
EMAIL_TRANSPORT_DEFAULT_URLの場合はホストとしてプロトコルの指定がうまくパースできないので、587ポートを使う方の設定を指定するといいようです。
そのため、僕の環境では公式ドキュメントに載っている、
Email::configTransport('default', [ 'url' => 'smtp://my@gmail.com:secret@smtp.gmail.com:465?tls=true', ]);
みたいな形でEMAIL_TRANSPORT_DEFAULT_URLを指定してもうまく行きませんでした。
また、利用する際にはGmail側の設定として、「安全性の低いアプリがアカウントにアクセスするのを許可する」を設定する必要があります。
https://support.google.com/accounts/answer/6010255