/**
  * Mark given messages as Processed
  * @param array|Message[] $messages
  * @return void
  */
 public function markMessagesAsProcessed(array $messages)
 {
     \Assert\that($messages)->all()->isInstanceOf('Diamante\\EmailProcessingBundle\\Model\\Message');
     foreach ($messages as $message) {
         $this->zendImapStorage->moveMessage($this->zendImapStorage->getNumberByUniqueId($message->getUniqueId()), $this->folderOfProcessedMessages());
     }
 }
Пример #2
0
 public function run()
 {
     $config = Config::get('xmailer.imap');
     $mail = new StorageImap(array('host' => $config['host'], 'user' => $config['user'], 'password' => $config['password']));
     //$mail = new StorageImap(Config::get('xmailer.imap'));
     if ($mail->countMessages() > 0) {
         $message = $mail->getMessage(1);
         if ($message->getHeaders()->get("from") != null) {
             $from = $message->getHeaders()->get("from")->toString();
         } else {
             $from = "";
         }
         if ($message->getHeaders()->get("to") != null) {
             $to = $message->getHeaders()->get("to")->toString();
         } else {
             $to = "";
         }
         preg_match("/[\\w._%+-]+@[\\w.-]+.[\\w]{2,}/", $from, $fromEmails);
         preg_match("/[\\w._%+-]+@[\\w.-]+.[\\w]{2,}/", $to, $toEmails);
         $sendTo = $this->getEmailAdresses($toEmails);
         if ($this->isValidSender($fromEmails[0])) {
             foreach ($sendTo as $mailadress) {
                 $fwd = new Message();
                 $fwd->setBody($message->getContent());
                 $h = $message->getHeaders();
                 $h->removeHeader('From');
                 $h->removeHeader('To');
                 $h->removeHeader('Reply-To');
                 $fwd->setHeaders($h);
                 $fwd->addFrom($mailadress['from']);
                 $fwd->addTo($mailadress['to']);
                 if (Config::get('xmailer.replyto')) {
                     $fwd->addReplyTo($fromEmails[0]);
                 }
                 $transport = new SendmailTransport();
                 $transport->send($fwd);
             }
             $mail->moveMessage(1, "INBOX.Sent");
         } else {
             $mail->moveMessage(1, "INBOX.Spam");
         }
         return t("%d email sent to %d People.", 1, count($sendTo));
     }
     return t("No emails sent.");
 }
Пример #3
0
 public function testMove()
 {
     $mail = new Storage\Imap($this->_params);
     $mail->selectFolder('subfolder/test');
     $toCount = $mail->countMessages();
     $mail->selectFolder('INBOX');
     $fromCount = $mail->countMessages();
     $mail->moveMessage(1, 'subfolder/test');
     $this->assertEquals($fromCount - 1, $mail->countMessages());
     $mail->selectFolder('subfolder/test');
     $this->assertEquals($toCount + 1, $mail->countMessages());
 }