Exemplo n.º 1
0
 /**
  * Check if message is autoryply
  * 
  * @param Mzax_Bounce_Message $message
  * @return boolean
  */
 public function isAutoReply(Mzax_Bounce_Message $message)
 {
     if ($header = $message->searchHeader(self::$headers)) {
         $message->info('autoreply_header', $header);
         return true;
     }
     $subject = trim($message->getSubject());
     if (!$subject) {
         return false;
     }
     foreach (self::$subjects as $needle) {
         if (stripos($subject, $needle) === 0) {
             $message->info('autoreply_subject', $needle);
             return true;
         }
     }
     foreach (self::$regex as $regex) {
         if (preg_match("/{$regex}/i", $subject, $matches)) {
             $message->info('autoreply_subject', $matches[0]);
             return true;
         }
     }
     // bit more aggressive, check the acctual content
     $body = $message->asString();
     $body = preg_replace('/[\\s]+/', ' ', $body);
     foreach (self::$body as $needle) {
         if (stripos($subject, $needle) === 0) {
             $message->info('autoreply_body', $needle);
             return true;
         }
     }
     return false;
 }
Exemplo n.º 2
0
 /**
  * 
  * (non-PHPdoc)
  * @see Mzax_Bounce_Detector_Abstract::inspect()
  */
 public function inspect(Mzax_Bounce_Message $message)
 {
     $subject = trim($message->getSubject());
     if (preg_match('/^Unsubscribe ([^\\s]+) \\(([0-9A-Z]+)\\)$/i', $subject, $matches)) {
         $email = $matches[1];
         $hash = $matches[2];
         /* @var $recipient Mzax_Emarketing_Model_Recipient */
         $recipient = Mage::getModel('mzax_emarketing/recipient')->loadByBeacon($hash);
         if ($recipient->getId()) {
             $recipient->prepare();
             if (strtolower($recipient->getAddress()) == strtolower($email)) {
                 $message->info('recipient_id', $recipient->getId(), 200);
                 $message->info('campaign_id', $recipient->getCampaignId(), 200);
                 $message->info('recipient', $email, 200);
                 $message->info(Mzax_Bounce::TYPE_UNSUBSCRIBE, true);
                 $message->info('type', Mzax_Bounce::TYPE_UNSUBSCRIBE);
                 $storeId = Mage::getResourceSingleton('mzax_emarketing/recipient')->getStoreId($recipient->getId());
                 if ($storeId) {
                     $message->info('store_id', $storeId, 100);
                 }
                 return true;
                 // stop
             }
         }
     }
 }
Exemplo n.º 3
0
 public function isAutoReply(Mzax_Bounce_Message $message)
 {
     if ($header = $message->searchHeader(self::$headers)) {
         $message->info('autoreply_header', $header);
         return true;
     }
     $subject = trim($message->getSubject());
     if (!$subject) {
         return false;
     }
     foreach (self::$subjects as $needle) {
         if (stripos($subject, $needle) === 0) {
             $message->info('autoreply_subject', $needle);
             return true;
         }
     }
     foreach (self::$regex as $regex) {
         if (preg_match("/{$regex}/i", $subject, $matches)) {
             $message->info('autoreply_subject', $matches[0]);
             return true;
         }
     }
     return false;
 }
Exemplo n.º 4
0
 public function isFailure(Mzax_Bounce_Message $message)
 {
     $from = $this->findEmail($message->getFrom());
     /* FROM CHECK */
     if (preg_match("/^(postmaster|mailer-daemon)\\@?/i", $from)) {
         $message->info('bounce_justification', 'From: ' . $from);
         return true;
     }
     $subject = $message->getSubject();
     self::normalizeSubject($subject);
     if ($subject) {
         foreach (self::$subjects as $needle) {
             if (stripos($subject, $needle) !== false) {
                 $message->info('bounce_justification', 'Subject: ' . $subject);
                 return true;
             }
         }
     }
     return false;
 }