Exemplo n.º 1
0
 protected function getallAction()
 {
     $translate = $this->application->getBootstrap()->getResource('translate');
     $view = $this->application->getBootstrap()->getResource('view');
     $view->setScriptPath(APPLICATION_PATH . '/views/scripts');
     $acl = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('formacl');
     $queueticketObj = new Queueticket();
     $queueticketRows = $queueticketObj->fetchAll("ghost = false");
     foreach ($queueticketRows as $queueticketRow) {
         try {
             $mail = new Zend_Mail_Storage_Imap(array('host' => $queueticketRow['input_email_host'], 'user' => $queueticketRow['input_email_user'], 'password' => $queueticketRow['input_email_password']));
             for ($i = 1; $i <= $mail->countMessages(); $i++) {
                 $message = $mail->getMessage($i);
                 if (!$message->hasFlag(Zend_Mail_Storage::FLAG_SEEN)) {
                     $values = array('subject' => $message->subject, 'content' => $message->getContent(), 'priority' => substr($queueticketRow['available_priority'], 0, 1), 'state' => substr($queueticketRow['available_states'], 0, 1), 'start' => date("c"), 'id_queue' => $queueticketRow['id']);
                     $model = new Ticket();
                     $row = $model->createRow($values);
                     $row->save();
                     $mail->setFlags($i, array(Zend_Mail_Storage::FLAG_SEEN));
                 }
             }
         } catch (Exception $e) {
             print_r($e->getMessage());
         }
     }
 }
Exemplo n.º 2
0
 public function testCountFlags()
 {
     $mail = new Zend_Mail_Storage_Imap($this->_params);
     foreach ($mail as $id => $message) {
         $mail->setFlags($id, array());
     }
     $this->assertEquals($mail->countMessages(Zend_Mail_Storage::FLAG_SEEN), 0);
     $this->assertEquals($mail->countMessages(Zend_Mail_Storage::FLAG_ANSWERED), 0);
     $this->assertEquals($mail->countMessages(Zend_Mail_Storage::FLAG_FLAGGED), 0);
     $mail->setFlags(1, array(Zend_Mail_Storage::FLAG_SEEN, Zend_Mail_Storage::FLAG_ANSWERED));
     $mail->setFlags(2, array(Zend_Mail_Storage::FLAG_SEEN));
     $this->assertEquals($mail->countMessages(Zend_Mail_Storage::FLAG_SEEN), 2);
     $this->assertEquals($mail->countMessages(Zend_Mail_Storage::FLAG_ANSWERED), 1);
     $this->assertEquals($mail->countMessages(array(Zend_Mail_Storage::FLAG_SEEN, Zend_Mail_Storage::FLAG_ANSWERED)), 1);
     $this->assertEquals($mail->countMessages(array(Zend_Mail_Storage::FLAG_SEEN, Zend_Mail_Storage::FLAG_FLAGGED)), 0);
     $this->assertEquals($mail->countMessages(Zend_Mail_Storage::FLAG_FLAGGED), 0);
 }
Exemplo n.º 3
0
    public function testSetFlags()
    {
        $mail = new Zend_Mail_Storage_Imap($this->_params);

        $mail->setFlags(1, array(Zend_Mail_Storage::FLAG_SEEN));
        $message = $mail->getMessage(1);
        $this->assertTrue($message->hasFlag(Zend_Mail_Storage::FLAG_SEEN));
        $this->assertFalse($message->hasFlag(Zend_Mail_Storage::FLAG_FLAGGED));

        $mail->setFlags(1, array(Zend_Mail_Storage::FLAG_SEEN, Zend_Mail_Storage::FLAG_FLAGGED));
        $message = $mail->getMessage(1);
        $this->assertTrue($message->hasFlag(Zend_Mail_Storage::FLAG_SEEN));
        $this->assertTrue($message->hasFlag(Zend_Mail_Storage::FLAG_FLAGGED));

        $mail->setFlags(1, array(Zend_Mail_Storage::FLAG_FLAGGED));
        $message = $mail->getMessage(1);
        $this->assertFalse($message->hasFlag(Zend_Mail_Storage::FLAG_SEEN));
        $this->assertTrue($message->hasFlag(Zend_Mail_Storage::FLAG_FLAGGED));

        $mail->setFlags(1, array('myflag'));
        $message = $mail->getMessage(1);
        $this->assertFalse($message->hasFlag(Zend_Mail_Storage::FLAG_SEEN));
        $this->assertFalse($message->hasFlag(Zend_Mail_Storage::FLAG_FLAGGED));
        $this->assertTrue($message->hasFlag('myflag'));

        try {
            $mail->setFlags(1, array(Zend_Mail_Storage::FLAG_RECENT));
        } catch (Exception $e) {
            return; // ok
        }
        $this->fail('should not be able to set recent flag');
    }
Exemplo n.º 4
0
 public function receive_email_crond()
 {
     $now = time();
     $lock_time = AWS_APP::cache()->get('receive_email_locker');
     if ($lock_time and $now - $lock_time <= 600) {
         return false;
     }
     $receiving_email_accounts = $this->get_receiving_email_config();
     if (!$receiving_email_accounts) {
         return false;
     }
     AWS_APP::cache()->set('receive_email_locker', $now, 600);
     foreach ($receiving_email_accounts as $receiving_email_config) {
         if (!$receiving_email_config['server'] or !$receiving_email_config['protocol'] or !$receiving_email_config['username'] or !$receiving_email_config['password'] or !$receiving_email_config['uid']) {
             continue;
         }
         $mail_config = array('host' => $receiving_email_config['server'], 'user' => $receiving_email_config['username'], 'password' => $receiving_email_config['password']);
         if ($receiving_email_config['ssl'] == 1) {
             $mail_config['ssl'] = 'SSL';
         }
         if ($receiving_email_config['port']) {
             $mail_config['port'] = $receiving_email_config['port'];
         }
         try {
             switch ($receiving_email_config['protocol']) {
                 case 'pop3':
                     $mail = new Zend_Mail_Storage_Pop3($mail_config);
                     break;
                 case 'imap':
                     $mail = new Zend_Mail_Storage_Imap($mail_config);
                     break;
                 default:
                     continue 2;
             }
         } catch (Exception $e) {
             $this->notification_of_receive_email_error($receiving_email_config['id'], $e->getMessage());
             continue;
         }
         $this->notification_of_receive_email_error($receiving_email_config['id'], null);
         $received_email['config_id'] = $receiving_email_config['id'];
         $received_email['uid'] = $receiving_email_config['uid'];
         foreach ($mail as $num => $message) {
             try {
                 if ($receiving_email_config['protocol'] == 'imap' and $message->hasFlag(Zend_Mail_Storage::FLAG_SEEN)) {
                     continue;
                 }
                 $received_email['message_id'] = substr($message->messageID, 1, -1);
                 $received_email['date'] = intval(strtotime($message->Date));
                 if ($now - $received_email['date'] > 604800 or $this->fetch_row('received_email', 'message_id = "' . $this->quote($received_email['message_id']) . '" AND date = ' . $received_email['date'])) {
                     continue;
                 }
                 if ($message->isMultipart()) {
                     for ($i = 1; $i <= $message->countParts(); $i++) {
                         $part = $message->getPart($i);
                         if (substr($part->contentType, 0, 5) == 'text/') {
                             $encoding = $part->contentTransferEncoding;
                             $type = $part->contentType;
                             $received_email['content'] = $part->getContent();
                             break;
                         } else {
                             continue;
                         }
                     }
                 } else {
                     $encoding = $message->contentTransferEncoding;
                     $type = $message->contentType;
                     $received_email['content'] = $message->getContent();
                 }
                 if (!$encoding or !$type) {
                     continue;
                 }
                 preg_match('/charset\\s?=\\s?"?([a-zA-Z0-9-]+)"?$/i', $type, $matches);
                 $charset = strtolower($matches[1]);
                 $received_email['subject'] = decode_eml($message->Subject);
                 preg_match('/<?([^<]+@.+(\\.[^>]+)+)>?$/i', $message->From, $matches);
                 $received_email['from'] = strtolower($matches[1]);
                 switch ($encoding) {
                     case 'base64':
                         $received_email['content'] = base64_decode($received_email['content']);
                         break;
                     case 'quoted-printable':
                         $received_email['content'] = quoted_printable_decode($received_email['content']);
                         break;
                 }
                 if ($charset and $charset != 'utf-8') {
                     $received_email['subject'] = mb_convert_encoding($received_email['subject'], 'utf-8', $charset);
                     $received_email['content'] = mb_convert_encoding($received_email['content'], 'utf-8', $charset);
                 }
                 $received_email['subject'] = strip_tags($received_email['subject']);
                 $received_email['content'] = strip_tags(preg_replace(array('/<p(\\s+[^>]*)?>/i', '/<\\/p>/i', '/<br\\s*\\/?>/i'), "\n", $received_email['content']));
                 $now++;
                 $received_email['access_key'] = md5($received_email['uid'] . $now);
                 $this->insert('received_email', $received_email);
                 if ($receiving_email_config['protocol'] == 'pop3') {
                     $mail->removeMessage($num);
                 }
                 if ($receiving_email_config['protocol'] == 'imap') {
                     $mail->setFlags($num, array(Zend_Mail_Storage::FLAG_SEEN));
                 }
             } catch (Exception $e) {
                 continue;
             }
         }
     }
     AWS_APP::cache()->delete('receive_email_locker');
     return true;
 }