Сценарий отчета о очереди письма Mail?
-
26-09-2019 - |
Вопрос
Есть ли скрипт электронной почты грушевой почты, который создает симпатичные диаграммы и графики из вашей базы данных MQ? У меня есть MQ на работе CRON, и я хочу связать некоторую отчетность в мою консоль администратора.
Решение
Не «врасно», но вы можете использовать новую поддержку обратного вызова в версии 1.2.3, чтобы заполнить таблицу журнала в вашей базе данных и из этого генерировать ваши отчеты. Функция обратного вызова вызывается до того, как соответствующая запись будет удалена из таблицы Mail_Queue в базе данных, так что при необходимости вы можете добавить дополнительные поля для вставки в таблицу журнала / отчетов.
Вам необходимо использовать последние выбросы почтовых пакетов Mail и Net_smtp, чтобы иметь возможность получить идентификатор ESMTP и подробности приветствия, если вам нужны для ваших отчетов. Кроме того, если вы хотите декодировать тело электронного письма и хранить, что для вашего отчета вам нужно установить пакет 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,...);
}