Exemplo n.º 1
0
 public function inspect(Mzax_Bounce_Message $message)
 {
     if ($message->type !== self::REPORT) {
         return false;
     }
     if ($message->getContentType('report-type') !== self::FEEDBACK) {
         return false;
     }
     $part = $message->getMimePart('message/feedback-report');
     if (!$part) {
         return false;
     }
     $report = $part->getDecodedHash();
     if (!is_array($report)) {
         return false;
     }
     $message->info(Mzax_Bounce::TYPE_ARF, true);
     $message->info('status', self::STATUS);
     $message->info('type', Mzax_Bounce::TYPE_ARF);
     // abuse|froud|virus|other|not-spam
     if (isset($report['feedback-type'])) {
         $feedbackType = $report['feedback-type'];
         $message->info('feedback-type', $feedbackType);
     }
     if (isset($report['removal-recipient'])) {
         $recipient = $this->findEmail($report['removal-recipient']);
         $message->info('recipient', $recipient);
     } else {
         if (isset($report['original-rcpt-to'])) {
             $recipient = $this->findEmail($report['original-rcpt-to']);
             $message->info('recipient', $recipient);
         }
     }
     /*
      * If we still have no recipient, look for our
      * old orignal message and get it from the To header
      */
     if (!$message->info('recipient')) {
         // check for embedded rfc822 message
         if ($rfc822 = $message->getMimePart('message/rfc822')) {
             $recipient = $this->findEmail($rfc822->getHeader('to'));
             $message->info('recipient', $recipient);
         }
     }
     return true;
 }
Exemplo n.º 2
0
 public function inspect(Mzax_Bounce_Message $message)
 {
     if ($message->type !== self::REPORT) {
         return false;
     }
     if ($message->getContentType('report-type') !== self::DELIVERY_STATUS) {
         return false;
     }
     $part = $message->getMimePart('message/delivery-status');
     if (!$part) {
         return false;
     }
     $status = $part->getDecodedHash();
     if (!is_array($status)) {
         return false;
     }
     $message->info('rfc1892', true);
     $message->info('type', Mzax_Bounce::TYPE_BOUNCE);
     // @see https://ohse.de/uwe/rfc/rfc1894.html#2.3.4
     if (isset($status['status'])) {
         if (preg_match(self::STATUS_REGEX, $status['status'], $matches)) {
             $message->info('status', $matches[1]);
         } else {
             $message->info('status', $status['status']);
         }
     } else {
         $message->info('status', self::DEFAULT_STATUS);
     }
     // @see https://ohse.de/uwe/rfc/rfc1894.html#2.3.1
     if (isset($status['original-recipient'])) {
         // address-type ; generic-address
         $recipient = $this->findEmail($status['original-recipient']);
         $message->info('recipient', $recipient);
     } else {
         if (isset($status['final-recipient'])) {
             // address-type ; generic-address
             $recipient = $this->findEmail($status['final-recipient']);
             $message->info('recipient', $recipient);
         }
     }
     // @see https://ohse.de/uwe/rfc/rfc1894.html#2.2.1
     if (isset($status['original-envelope-id'])) {
         $envelopeId = $status['original-envelope-id'];
         $message->info('envelope_id', $envelopeId);
     }
 }