【问题标题】:pear mail queue report script?梨邮件队列报告脚本?
【发布时间】:2011-02-08 00:12:30
【问题描述】:

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

【问题讨论】:

    标签: php report pear mail-queue


    【解决方案1】:

    不是“本机”,但您可以使用 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,...);
    }
    

    【讨论】:

    • 很好的答案,但我不确定我是否有足够的带宽,并且会寻找像 postmarkapp.com 这样的服务(我与该服务无关)每千封电子邮件发送 1.50 美元听起来像为我节省开支,直到我的用户群大幅增长。当它发生时,我会回来完全消化这个!
    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2012-06-25
    • 1970-01-01
    • 2014-02-21
    • 2011-10-21
    • 2015-11-20
    相关资源
    最近更新 更多