1

是否有一个梨邮件队列报告脚本可以从您的 MQ 数据库构建漂亮的图表和图形?我在 cron 作业中设置了 MQ,我想将一些报告绑定到我的管理控制台中。

4

1 回答 1

2

不是“本机”,但您可以使用 1.2.3 版中的新回调支持来填充数据库中的日志表并从中生成报告。在从数据库中的 mail_queue 表中删除相关条目之前调用回调函数,因此如有必要,您可以向其添加额外字段以插入日志/报告表。

您需要使用 Mail 和 Net_SMTP PEAR 包的最新版本,以便能够检索 esmtp id 和问候语详细信息(如果您的报告需要它们)。此外,如果您想解码电子邮件正文并将其存储为您的报告,您需要安装 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 回答