Esempio n. 1
0
 /**
  * 检查未读邮件
  */
 public function checkAction()
 {
     //$address = $this->_request->getQuery('address');
     $emails = $this->_daoEmail->getEmails(array('orgid' => $this->_user->orgId, 'userid' => $this->_user->userId));
     $result = array();
     foreach ($emails as $email) {
         if (null != $email && $email->protocol == 'imap' && $email->host) {
             $port = $email->port ? $email->port : ($email->isSsl ? 993 : 143);
             $imap = new Zend_Mail_Protocol_Imap();
             try {
                 $connect = $imap->connect($email->host, $port, $email->isSsl);
             } catch (Zend_Mail_Protocol_Exception $e) {
                 continue;
             }
             $login = $imap->login($email->address, $email->password);
             // 登录邮箱
             if (!$login) {
                 $result[$email->address] = array('msg' => sprintf($this->lang['mailbox_login_failure'], $email->address, $email->address));
                 continue;
             }
             // 打开INBOX
             $ret = $imap->examineOrSelect();
             if (false !== $ret && isset($ret['recent'])) {
                 $email->unreadNum = (int) $ret['recent'];
                 // 查找新邮件
                 /*$records = $imap->search('RECENT');
                 
                                     if (false !== $records) {
                 
                                     }*/
                 $result[$email->address] = array('recent' => $email->unreadNum);
                 $this->_daoEmail->updateEmail($email->orgId, $email->userId, $email->address, array('lastcheckinfo' => implode("\n", array($email->unreadNum, $email->lastMailId, $email->lastMailSubject, $email->lastMailFrom)), 'lastchecktime' => time()));
             }
             $imap->logout();
         }
     }
     $this->json(true, null, $result);
 }