/** * 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; }
/** * * (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 } } } }
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; }
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; }