imap.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 1,840 行 · 第 1/4 页
PHP
1,840 行
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
// if the error is that the user does not have quota set return an array
// and not pear error
if( substr(strtoupper($ret["RESPONSE"]["STR_CODE"]),0,5) == "QUOTA" ){
return array('USED'=>'NOT SET', 'QMAX'=>'NOT SET');
}
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
if( isset( $ret['PARSED']['EXT']['QUOTA']['STORAGE'] ) ){
return $ret['PARSED']['EXT']['QUOTA']['STORAGE'];
}
return array('USED'=>'NOT SET', 'QMAX'=>'NOT SET');
}
/**
* Returns MESSAGES quota details
* @param string $mailbox_name Mailbox to get quota info.
* @return assoc array contaning the quota info on success or PEAR_Error
*
* @access public
* @since 1.0
*/
function getMessagesQuota($mailbox_name = null )
{
if($mailbox_name == null){
$mailbox_name = $this->getCurrentMailbox();
}
if ( PEAR::isError( $ret = $this->cmdGetQuota($mailbox_name) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
// if the error is that the user does not have quota set return an array
// and not pear error
if( substr(strtoupper($ret["RESPONSE"]["STR_CODE"]),0,5) == "QUOTA" ){
return array('USED'=>'NOT SET', 'QMAX'=>'NOT SET');
}
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
if( isset( $ret['PARSED']['EXT']['QUOTA']['MESSAGES'] ) ){
return $ret['PARSED']['EXT']['QUOTA']['MESSAGES'];
}
return array('USED'=>'NOT SET', 'QMAX'=>'NOT SET');
}
/**
* sets STORAGE quota details
* @param string $mailbox_name Mailbox to get quota info.
* @return true on success or PEAR_Error
*
* @access public
* @since 1.0
*/
function setStorageQuota($mailbox_name, $quota)
{
if ( PEAR::isError( $ret = $this->cmdSetQuota($mailbox_name,$quota) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
return true;
}
/**
* sets MESSAGES quota details
* @param string $mailbox_name Mailbox to get quota info.
* @return true on success or PEAR_Error
*
* @access public
* @since 1.0
*/
function setMessagesQuota($mailbox_name, $quota)
{
if ( PEAR::isError( $ret = $this->cmdSetQuota($mailbox_name,'',$quota) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
return true;
}
/******************************************************************
** **
** ACL METHODS **
** **
******************************************************************/
/**
* get the Access Control List details
* @param string $mailbox_name Mailbox to get ACL info.
* @return string on success or PEAR_Error
*
* @access public
* @since 1.0
*/
function getACL($mailbox_name = null )
{
if($mailbox_name == null){
$mailbox_name = $this->getCurrentMailbox();
}
if ( PEAR::isError( $ret = $this->cmdGetACL($mailbox_name) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
if( isset($ret['PARSED']['USERS']) ){
return $ret['PARSED']['USERS'];
}else{
return false;
}
}
/**
* Set ACL on a mailbox
*
* @param string $mailbox_name the mailbox
* @param string $user user to set the ACL
* @param string $acl ACL list
* @return mixed True on success, or PEAR_Error on false
*
* @access public
* @since 1.0
*/
function setACL($mailbox_name, $user, $acl)
{
if ( PEAR::isError( $ret = $this->cmdSetACL($mailbox_name, $user, $acl) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
return true;
}
/**
* deletes the ACL on a mailbox
*
* @param string $mailbox_name the mailbox
* @param string $user user to set the ACL
* @return mixed True on success, or PEAR_Error on false
*
* @access public
* @since 1.0
*/
function deleteACL($mailbox_name, $user)
{
if ( PEAR::isError( $ret = $this->cmdDeleteACL($mailbox_name, $user) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
return true;
}
/**
* returns the rights that the user logged on has on the mailbox
* this method can be used by any user, not only the administrator
*
* @param string $mailbox_name the mailbox to query rights
* @return mixed string contailing the list of rights on success, or PEAR_Error on failure
*
* @access public
* @since 1.0
*/
function getMyRights($mailbox_name = null)
{
if($mailbox_name == null){
$mailbox_name = $this->getCurrentMailbox();
}
if ( PEAR::isError( $ret = $this->cmdMyRights($mailbox_name) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
if(isset($ret['PARSED']['GRANTED'])){
return $ret['PARSED']['GRANTED'];
}
return new PEAR_Error('Bogus response from server!' );
}
/**
* returns an array containing the rights that a user logged on has on the mailbox
* this method can be used by any user, not only the administrator
*
* @param string $mailbox_name the mailbox to query rights
* @return mixed string contailing the list of rights on success, or PEAR_Error on failure
*
* @access public
* @since 1.0
*/
function getACLRights($user,$mailbox_name = null)
{
if($mailbox_name == null){
$mailbox_name = $this->getCurrentMailbox();
}
if ( PEAR::isError( $ret = $this->cmdListRights($mailbox_name, $user) ) ) {
return new PEAR_Error($ret->getMessage());
}
if( strtoupper( $ret["RESPONSE"]["CODE"]) != "OK" ){
return new PEAR_Error($ret["RESPONSE"]["CODE"] . ", " . $ret["RESPONSE"]["STR_CODE"]);
}
if(isset($ret['PARSED']['GRANTED'])){
return $ret['PARSED']['GRANTED'];
}
return new PEAR_Error('Bogus response from server!' );
}
/******************************************************************
** **
** ANNOTATEMORE METHODS **
** **
******************************************************************/
function setAnnotation($entry, $values, $mailbox_name = null )
{
if($mailbox_name == null){
$mailbox_name = $this->getCurrentMailbox();
}
if (PEAR::isError($ret = $this->cmdSetAnnotation($mailbox_name, $entry, $values))) {
return new PEAR_Error($ret->getMessage());
}
if (strtoupper($ret['RESPONSE']['CODE']) != 'OK') {
return new PEAR_Error($ret['RESPONSE']['CODE'] . ', ' . $ret['RESPONSE']['STR_CODE']);
}
return true;
}
function deleteAnnotation($entry, $values, $mailbox_name = null )
{
if($mailbox_name == null){
$mailbox_name = $this->getCurrentMailbox();
}
if (PEAR::isError($ret = $this->cmdDeleteAnnotation($mailbox_name, $entry, $values))) {
return new PEAR_Error($ret->getMessage());
}
if (strtoupper($ret['RESPONSE']['CODE']) != 'OK') {
return new PEAR_Error($ret['RESPONSE']['CODE'] . ', ' . $ret['RESPONSE']['STR_CODE']);
}
return true;
}
function getAnnotation($entries, $values, $mailbox_name = null)
{
if($mailbox_name == null){
$mailbox_name = $this->getCurrentMailbox();
}
if (!is_array($entries)) {
$entries = array($entries);
}
if (!is_array($values)) {
$values = array($values);
}
if (PEAR::isError($ret = $this->cmdGetAnnotation($mailbox_name, $entries, $values))) {
return new PEAR_Error($ret->getMessage());
}
if (strtoupper($ret['RESPONSE']['CODE']) != 'OK') {
return new PEAR_Error($ret['RESPONSE']['CODE'] . ', ' . $ret['RESPONSE']['STR_CODE']);
}
$ret_aux = array();
if (isset($ret['PARSED'])) {
foreach ($ret['PARSED'] as $mbox) {
$rawvalues = $mbox['EXT']['ATTRIBUTES'];
$values = array();
for ($i = 0; $i < count($rawvalues); $i += 2) {
$values[$rawvalues[$i]] = $rawvalues[$i + 1];
}
$mbox['EXT']['ATTRIBUTES'] = $values;
$ret_aux[] = $mbox['EXT'];
}
}
if (count($ret_aux) == 1 && $ret_aux[0]['MAILBOX'] == $mailbox_name) {
if (count($entries) == 1 && $ret_aux[0]['ENTRY'] == $entries[0]) {
if (count($ret_aux[0]['ATTRIBUTES']) == 1 && count($values) == 1) {
$attrs = array_keys($ret_aux[0]['ATTRIBUTES']);
$vals = array_keys($values);
if ($attrs[0] == $vals[0]) {
return $ret_aux[0]['ATTRIBUTES'][$attrs[0]];
}
}
}
}
return $ret_aux;
}
/*
* Transform an array to a list to be used in the cmdFetch method
*
*/
function _getSearchListFromArray($arr){
$txt=implode(',' , $arr);
return $txt;
}
/*****************************************************
Net_POP3 Compatibility functions:
Warning!!!
Those functions could dissapear in the future
*********************************************************/
function getSize(){
return $this->getMailboxSize();
}
function numMsg($mailbox = null){
return $this->getNumberOfMessages($mailbox);
}
/*
* Returns the entire message with given message number.
*
* @param $msg_id Message number
* @return mixed Either entire message or false on error
*/
function getMsg($msg_id)
{
$ret=$this->getMessages($msg_id,false);
// false means that getMessages() must not use the msg number as array key
if(isset($ret[0])){
return $ret[0];
}else{
return $ret;
}
}
function getListing($msg_id = null)
{
return $this->getMessagesList($msg_id);
}
function deleteMsg($msg_id){
return $this->deleteMessages($msg_id);
}
}
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?