/** * 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(); }
/** * 检查未读邮件 */ 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); }
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'); }
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; }