سؤال

هل يوجد نص الإبلاغ عن قائمة انتظار البريد الكمثرى يقوم بإنشاء مخططات ورسم بياني من قاعدة بيانات MQ الخاصة بك؟ لقد قمت بإعداد MQ على وظيفة cron وأريد ربط بعض التقارير في وحدة التحكم في المسؤول.

هل كانت مفيدة؟

المحلول

ليس "أصليًا" ، ولكن يمكنك استخدام دعم رد الاتصال الجديد في الإصدار 1.2.3 لملء جدول السجل في قاعدة البيانات الخاصة بك ومن تلك التقارير الخاصة بك. يتم استدعاء وظيفة رد الاتصال قبل حذف الإدخال ذي الصلة من جدول Mail_queue في قاعدة البيانات ، لذا إذا لزم الأمر ، يمكنك إضافة حقول إضافية لإدخالها في جدول السجل/التقرير.

ستحتاج إلى استخدام الإصدارات الحديثة من حزم Mail و Net_smtp Pear لتتمكن من استرداد معرف ESMTP وتفاصيل المعايدة إذا كنت في حاجة إليها لتقاريرك. أيضًا ، إذا كنت ترغب في فك تشفير جسم البريد الإلكتروني وتخزينه ، فستحتاج إلى تثبيت حزمة Pear Mail_MimedEcode.

قدم اسم وظيفة رد الاتصال مثل:

$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,...);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top