Script de relatório da fila de correio de pêra?
-
26-09-2019 - |
Pergunta
Existe um script de relatórios de fila de correio de pêra que cria gráficos e gráficos bonitos do seu banco de dados MQ? Eu tenho o MQ configurado em um trabalho de Cron e quero amarrar alguns relatórios no meu console administrativo.
Solução
Não 'nativamente', mas você pode usar o novo suporte de retorno de chamada na versão 1.2.3 para preencher uma tabela de log no seu banco de dados e, a partir disso, gerar seus relatórios. A função de retorno de chamada é chamada antes que a entrada relevante seja excluída da tabela Mail_queue no banco de dados; portanto, se necessário, você pode adicionar campos extras para inserir sua tabela de log/relatório.
Você precisará usar versões recentes dos pacotes de correio e net_smtp para poder recuperar o ID do ESMTP e cumprimentar os detalhes, se precisar deles para seus relatórios. Além disso, se você deseja decodificar o corpo do email e armazenar isso para o seu relatório, precisará instalar o pacote Mail_mimedecode Pêis.
Forneça o nome da função de retorno de chamada como assim:
$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,...);
}