0
1

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 3 years have passed since last update.

CakePHP3.9 で Mail送信ログをログに吐き出したかった

Last updated at Posted at 2020-07-13

うだうだ

メールの本文とか、ヘッダーとか、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 の方に 追加するんだぜ

app.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は↓こんな感じで

app.php
    /*
     * Email delivery profiles
     */
    'Email' => [
        'default' => [
            'transport' => 'default',
            'from' => 'you@localhost',
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
            :
            :

            'log' => true,
        ],
    ],

でた

APP/logs/配下に、email.logが。
中身は、メッセージIDとか ヘッダーとか、全部出てる 欲しい情報。
うむ。良かった。満足。

いちおう、このログって 送信できたときにしか出力されないんで。たぶん。
(送信途中で、何らかのエラーが起きると、ここ(_logDelivery)までたどり着かないから)

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?