Пример #1
0
 /**
  * Close resource for mail lib. If you need to control, when the resource
  * is closed. Otherwise the destructor would call this.
  *
  * @return null
  */
 public function close()
 {
     $this->_currentFolder = '';
     $this->_protocol->logout();
 }
Пример #2
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);
 }
Пример #3
0
 public function testClosedSocketNewlineToken()
 {
     $protocol = new Zend_Mail_Protocol_Imap($this->_params['host']);
     $protocol->login($this->_params['user'], $this->_params['password']);
     $protocol->logout();
     try {
         $protocol->select("foo\nbar");
     } catch (Exception $e) {
         return;
         // ok
     }
     $this->fail('no exception while using procol with closed socket');
 }
Пример #4
0
 private function checkLoginAgainstIMAP($username = '', $password = '')
 {
     $session = Registry::get('session');
     $emails = array($username);
     if (!strchr($username, '@')) {
         return 0;
     }
     $imap = new Zend_Mail_Protocol_Imap(IMAP_HOST, IMAP_PORT, IMAP_SSL);
     if ($imap->login($username, $password)) {
         $imap->logout();
         $extra_emails = $this->model_user_user->get_email_addresses_from_groups($emails);
         $emails = array_merge($emails, $extra_emails);
         $this->add_session_vars($username, $username, $emails, 0);
         $session->set("password", $password);
         return 1;
     }
     return 0;
 }