function getMessages() { $pop = $this->connect(); $toDelete = []; foreach ($pop as $i => $source) { $message = new Message($i, function () use($i, &$toDelete) { $toDelete[] = $i; }); $from = $source->from ?: $source->{'return-path'}; $message->setMessageId(str_replace(['<', '>'], '', $source->{'message-id'})); $message->setRawFrom($from); $message->setSubject($source->subject); $message->setRecipient($source->to); $message->setHtmlBody($this->getBody($source, 'text/html')); $message->setBody($this->getBody($source, 'text/plain')); $this->handleAttachments($message, $source); (yield $message); } // Due to an issue in Zend_Mail_Storage, deletion must be done in reverse order $toDelete = array_reverse($toDelete); foreach ($toDelete as $i) { $pop->removeMessage($i); } $pop->close(); }
function createAction(Account $account, Message $message) { $subject = $message->getSubject(); foreach ($this->config as $prefix => $factory) { if (empty($prefix) || strpos($subject, $prefix) === 0) { $subject = trim(substr($subject, strlen($prefix))); $message->setSubject($subject); return $factory->createAction($account, $message); } } throw new MailInException(tr("Unable to find suitable action.")); }