Пример #1
0
 /**
  * Read Email
  *
  * @param        $mailbox_email
  * @param        $email
  * @param        $accessToken
  * @param        $email_type
  * @param        $imap_server
  * @param        $lastDate
  * @param        $user_id
  * @param        $module
  * @param string $signature
  *
  * @return bool
  * @internal param $module
  * @since rt-Helpdesk 0.1
  */
 public function reademail($mailbox_email, $email, $accessToken, $email_type, $imap_server, $lastDate, $user_id, $module, $signature = '')
 {
     set_time_limit(0);
     global $signature, $rt_mail_settings;
     if (!$this->try_imap_login($email, $accessToken, $email_type, $imap_server)) {
         $rt_mail_settings->update_sync_status($email, false);
         rt_log('login fail');
         return false;
     }
     $storage = new ImapStorage($this->imap);
     $email_acc = $rt_mail_settings->get_email_acc($email, $module);
     if (empty($email_acc)) {
         $rt_mail_settings->update_sync_meta_time($email, current_time('mysql'));
         $rt_mail_settings->update_sync_status($email, false);
         rt_log('email fail');
         return false;
     }
     $email_data = maybe_unserialize($email_acc->email_data);
     if (empty($email_data['mail_folders'])) {
         $rt_mail_settings->update_sync_meta_time($email, current_time('mysql'));
         $rt_mail_settings->update_sync_status($email, false);
         rt_log('inbox folder fail');
         return false;
     }
     $mail_folders = explode(',', isset($email_data['mail_folders']) ? $email_data['mail_folders'] : '');
     global $sync_inbox_type;
     global $rt_mail_uid;
     foreach ($mail_folders as $folder) {
         $storage->selectFolder($folder);
         rt_log(' Reading folder - ' . esc_attr($folder) . "\r\n");
         $sync_inbox_type = $folder;
         if (!isset($rt_mail_uid[$sync_inbox_type])) {
             $rt_mail_uid[$sync_inbox_type] = 0;
         }
         global $rt_mail_uid;
         $arrayMailIds = array();
         if ($rt_mail_uid[$sync_inbox_type] > 0) {
             $allMail = $storage->protocol->requestAndResponse("UID FETCH {$rt_mail_uid[$sync_inbox_type]}:* (UID)", array());
             if (is_array($allMail)) {
                 foreach ($allMail as $tempEmail) {
                     $arrayMailIds[] = array('uid' => $tempEmail[2][1], 'msgid' => $tempEmail[0]);
                 }
             }
         } else {
             $arrayMailIds = $storage->protocol->search(array('SINCE ' . $lastDate));
         }
         $this->rt_parse_email($mailbox_email, $email, $storage, $arrayMailIds, $user_id, $module);
         rt_log(' Reading finish - ' . esc_attr($folder) . "\r\n");
     }
     $rt_mail_settings->update_sync_meta_time($email, current_time('mysql'));
     $rt_mail_settings->update_sync_status($email, false);
 }
Пример #2
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());
 }