Пример #1
0
 /**
  * create instance with parameters
  * Supported paramters are
  *   - user username
  *   - host hostname or ip address of IMAP server [optional, default = 'localhost']
  *   - password password for user 'username' [optional, default = '']
  *   - port port for IMAP server [optional, default = 110]
  *   - ssl 'SSL' or 'TLS' for secure sockets
  *   - folder select this folder [optional, default = 'INBOX']
  *
  * @param  array $params mail reader specific parameters
  * @throws Zend_Mail_Storage_Exception
  * @throws Zend_Mail_Protocol_Exception
  */
 public function __construct($params)
 {
     $this->_has['flags'] = true;
     if ($params instanceof Zend_Mail_Protocol_Imap) {
         $this->_protocol = $params;
         try {
             $this->selectFolder('INBOX');
         } catch (Zend_Mail_Storage_Exception $e) {
             throw new Zend_Mail_Storage_Exception('cannot select INBOX, is this a valid transport?');
         }
         return;
     }
     if (!isset($params['user'])) {
         throw new Zend_Mail_Storage_Exception('need at least user in params');
     }
     $params['host'] = isset($params['host']) ? $params['host'] : 'localhost';
     $params['password'] = isset($params['password']) ? $params['password'] : '';
     $params['port'] = isset($params['port']) ? $params['port'] : null;
     $params['ssl'] = isset($params['ssl']) ? $params['ssl'] : false;
     $this->_protocol = new Zend_Mail_Protocol_Imap();
     $this->_protocol->connect($params['host'], $params['port'], $params['ssl']);
     if (!$this->_protocol->login($params['user'], $params['password'])) {
         throw new Zend_Mail_Storage_Exception('cannot login, user or password wrong');
     }
     $this->selectFolder(isset($params['folder']) ? $params['folder'] : 'INBOX');
 }
Пример #2
0
 /**
  * create instance with parameters
  * Supported paramters are
  *   - user username
  *   - host hostname or ip address of IMAP server [optional, default = 'localhost']
  *   - password password for user 'username' [optional, default = '']
  *   - port port for IMAP server [optional, default = 110]
  *   - ssl 'SSL' or 'TLS' for secure sockets
  *   - folder select this folder [optional, default = 'INBOX']
  *
  * @param  array $params mail reader specific parameters
  * @throws Zend_Mail_Storage_Exception
  * @throws Zend_Mail_Protocol_Exception
  */
 public function __construct($params)
 {
     if (is_array($params)) {
         $params = (object) $params;
     }
     $this->_has['flags'] = true;
     if ($params instanceof Zend_Mail_Protocol_Imap) {
         $this->_protocol = $params;
         try {
             $this->selectFolder('INBOX');
         } catch (Zend_Mail_Storage_Exception $e) {
             throw new Zend_Mail_Storage_Exception('cannot select INBOX, is this a valid transport?');
         }
         return;
     }
     if (!isset($params->user)) {
         throw new Zend_Mail_Storage_Exception('need at least user in params');
     }
     $host = isset($params->host) ? $params->host : 'localhost';
     $password = isset($params->password) ? $params->password : '';
     $port = isset($params->port) ? $params->port : null;
     $ssl = isset($params->ssl) ? $params->ssl : false;
     $this->_protocol = new Zend_Mail_Protocol_Imap();
     $this->_protocol->connect($host, $port, $ssl);
     if (!$this->_protocol->login($params->user, $password)) {
         throw new Zend_Mail_Storage_Exception('cannot login, user or password wrong');
     }
     $this->selectFolder(isset($params->folder) ? $params->folder : 'INBOX');
 }
Пример #3
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);
 }