うだうだ
メールの本文とか、ヘッダーとか、ToとかFromとか、とにかくそういうログが見たかった。
出力したかった。
がしかし、公式でもいい方法が見つからず、、、、、、、
ていうか Mailのリファレンスに 設定プロファイルのオプションで "log"
って用意されてるんだけど
true
って指定しても、 debug
って指定しても、どこにもログが吐き出されないわけで。
一体これは、なんのためのオプションなんだと。
Email - 3.9 https://book.cakephp.org/3/ja/core-libraries/email.html#email-configurations
ネットをさまよって、スタックオーバーフローかなんかの記事で app.php内のログの設定で
mail用のscopeを追加してやれば良いんだよって記事を見かけて(どの記事だったか忘れた)
そんなこと、公式のどこにも書かれてなかったぞ。って思って。
とりあえず、Mailer関連のクラス全部片っ端から、log
とかconfig
でgrepして
なんか Log::write してるところを見つけた。ここ。
これみると、設定プロファイルの log
はちゃんと読んでるから、あとは、
'scope' => 'email',
ってなってるから、emailって名のscope用意してやれば良いんじゃなかろうか。
やってみた
↓実際には app.default.php の方に 追加するんだぜ
/*
* Configures logging options
*/
'Log' => [
'debug' => [
'className' => FileLog::class,
'path' => LOGS,
'file' => 'debug',
'url' => env('LOG_DEBUG_URL', null),
'scopes' => false,
'levels' => ['notice', 'info', 'debug'],
],
:
: log設定のところに email を追加
'email' => [
'className' => FileLog::class,
'path' => LOGS,
'file' => 'email',
'url' => env('LOG_DEBUG_URL', null),
'scopes' => 'email',
'levels' => ['notice', 'info', 'debug'],
],
],
あと、Emailのプロファイルの logは↓こんな感じで
/*
* Email delivery profiles
*/
'Email' => [
'default' => [
'transport' => 'default',
'from' => 'you@localhost',
//'charset' => 'utf-8',
//'headerCharset' => 'utf-8',
:
:
'log' => true,
],
],
でた
APP/logs/配下に、email.logが。
中身は、メッセージIDとか ヘッダーとか、全部出てる 欲しい情報。
うむ。良かった。満足。
いちおう、このログって 送信できたときにしか出力されないんで。たぶん。
(送信途中で、何らかのエラーが起きると、ここ(_logDelivery)までたどり着かないから)