public function testLateFetch() { $mail = new Storage\Mbox(array('filename' => __DIR__ . '/_files/test.mbox/INBOX')); $message = new Message(array('handler' => $mail, 'id' => 5)); $this->assertEquals($message->countParts(), 2); $this->assertEquals($message->countParts(), 2); $message = new Message(array('handler' => $mail, 'id' => 5)); $this->assertEquals($message->subject, 'multipart'); $message = new Message(array('handler' => $mail, 'id' => 5)); $this->assertTrue(strpos($message->getContent(), 'multipart message') === 0); }
protected function processBouncedMessage(\Zend\Mail\Message $message) { $content = $message->getContent(); $isHard = false; if (preg_match('/permanent[ ]*[error|failure]/', $content)) { $isHard = true; } if (preg_match('/X-QueueItemId: [a-z0-9\\-]*/', $content, $m)) { $arr = preg_split('/X-QueueItemId: /', $m[0], -1, \PREG_SPLIT_NO_EMPTY); $queueItemId = $arr[0]; if (!$queueItemId) { return; } $queueItem = $this->getEntityManager()->getEntity('EmailQueueItem', $queueItemId); if (!$queueItem) { return; } $massEmailId = $queueItem->get('massEmailId'); $massEmail = $this->getEntityManager()->getEntity('MassEmail', $massEmailId); $campaignId = null; if ($massEmail) { $campaignId = $massEmail->get('campaignId'); } $targetType = $queueItem->get('targetType'); $targetId = $queueItem->get('targetId'); $target = $this->getEntityManager()->getEntity($targetType, $targetId); $emailAddress = $queueItem->get('emailAddress'); if ($isHard && $emailAddress) { $emailAddressEntity = $this->getEntityManager()->getRepository('EmailAddress')->getByAddress($emailAddress); $emailAddressEntity->set('invalid', true); $this->getEntityManager()->saveEntity($emailAddressEntity); } if ($campaignId && $target && $target->id) { $this->getCampaignService()->logBounced($campaignId, $queueItemId, $target, $emailAddress, $isHard); } } }