2010-04-14 51 views
1

是否有一個梨郵件隊列報告腳本,可以從您的MQ數據庫構建漂亮的圖表和圖形?我將MQ設置爲cron作業,並且想要將一些報告與我的管理控制檯相關聯。梨郵件隊列報告腳本?

回答

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,...); 
} 
+0

偉大的答案,但我不知道我有這樣的帶寬,將尋求像postmarkapp.com服務(我沒有與服務的關係) 每發送1000封電子郵件的收費爲1.50美元聽起來像儲蓄給我,直到我的用戶羣顯着增長。當它發生時,我會回來完全消化它! – robr 2010-04-17 17:16:08