Пример #1
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.");
 }
Пример #2
0
 public function testCountFlags()
 {
     $mail = new Storage\Imap($this->_params);
     foreach ($mail as $id => $message) {
         $mail->setFlags($id, array());
     }
     $this->assertEquals($mail->countMessages(Storage::FLAG_SEEN), 0);
     $this->assertEquals($mail->countMessages(Storage::FLAG_ANSWERED), 0);
     $this->assertEquals($mail->countMessages(Storage::FLAG_FLAGGED), 0);
     $mail->setFlags(1, array(Storage::FLAG_SEEN, Storage::FLAG_ANSWERED));
     $mail->setFlags(2, array(Storage::FLAG_SEEN));
     $this->assertEquals($mail->countMessages(Storage::FLAG_SEEN), 2);
     $this->assertEquals($mail->countMessages(Storage::FLAG_ANSWERED), 1);
     $this->assertEquals($mail->countMessages(array(Storage::FLAG_SEEN, Storage::FLAG_ANSWERED)), 1);
     $this->assertEquals($mail->countMessages(array(Storage::FLAG_SEEN, Storage::FLAG_FLAGGED)), 0);
     $this->assertEquals($mail->countMessages(Storage::FLAG_FLAGGED), 0);
 }
Пример #3
0
 public function countMessages($flags)
 {
     return $this->storage->countMessages($flags);
 }