1

MQ データベースからきれいなチャートやグラフを作成する pear メール キュー レポート スクリプトはありますか? cron ジョブで MQ をセットアップしており、レポートを管理コンソールに結び付けたいと考えています。

4

1 に答える 1

2

「ネイティブ」ではありませんが、バージョン 1.2.3 の新しいコールバック サポートを使用して、データベースにログ テーブルを入力し、そこからレポートを生成できます。コールバック関数は、関連するエントリがデータベースの mail_queue テーブルから削除される前に呼び出されるため、必要に応じてログ/レポート テーブルに挿入するフィールドを追加できます。

レポートに必要な場合は、esmtp ID とグリーティングの詳細を取得できるように、Mail および Net_SMTP PEAR パッケージの最近のリリースを使用する必要があります。また、電子メールの本文をデコードしてレポート用に保存する場合は、Mail_mimeDecode PEAR パッケージをインストールする必要があります。

次のようにコールバック関数の名前を指定します。

$dn = $mail_queue->sendMailsInQueue(
    MAX_AMOUNT_MAILS,
    MAILQUEUE_START,  
    MAILQUEUE_MAX_RETRY,
    "callback_fn");

function callback_fn($args) {
    $row = get_mail_queue_row($args['id']);
    $headers = unserialize($row['headers']);
    $subject = $headers['Subject'];
    $body = unserialize($row['body']);

    $mh = '';
    foreach($headers as $key=>$value) {
        $mh .= "$key:$value\n";
    }
    $mail = $mh . "\n" . $body;
    $decoder = new Mail_mimeDecode($mail);
    $decoded = $decoder->decode(array(
        'include_bodies' => TRUE,
        'decode_bodies'  => TRUE,
        'decode_headers'  => TRUE,
    ));
    $body = $decoded->body;

    if (isset($args['greeting'])) {
        $greeting = $args['greeting'];
        $greets = explode(" ", $greeting);
        $detail =  "esmtp id: {$args['queued_as']}; server: {$greets[0]}";
    } else {
        $detail =  "esmtp id: {$args['queued_as']}; server: localhost";
    }

    insert_to_log($detail, $subject,...);
}
于 2010-04-16T11:58:14.750 に答える