POP3::pop_list( $msgNum = "" )

In this article

Source

function pop_list ($msgNum = "") {
    //  If called with an argument, returns that msgs' size in octets
    //  No argument returns an associative array of undeleted
    //  msg numbers and their sizes in octets

    if(!isset($this->FP))
    {
        $this->ERROR = "POP3 pop_list: " . _("No connection to server");
        return false;
    }
    $fp = $this->FP;
    $Total = $this->COUNT;
    if( (!$Total) or ($Total == -1) )
    {
        return false;
    }
    if($Total == 0)
    {
        return array("0","0");
        // return -1;   // mailbox empty
    }

    $this->update_timer();

    if(!empty($msgNum))
    {
        $cmd = "LIST $msgNum";
        fwrite($fp,"$cmd\r\n");
        $reply = fgets($fp,$this->BUFFER);
        $reply = $this->strip_clf($reply);
        if($this->DEBUG) {
            @error_log("POP3 SEND [$cmd] GOT [$reply]",0);
        }
        if(!$this->is_ok($reply))
        {
            $this->ERROR = "POP3 pop_list: " . _("Error ") . "[$reply]";
            return false;
        }
        list($junk,$num,$size) = preg_split('/\s+/',$reply);
        return $size;
    }
    $cmd = "LIST";
    $reply = $this->send_cmd($cmd);
    if(!$this->is_ok($reply))
    {
        $reply = $this->strip_clf($reply);
        $this->ERROR = "POP3 pop_list: " . _("Error ") .  "[$reply]";
        return false;
    }
    $MsgArray = array();
    $MsgArray[0] = $Total;
    for($msgC=1;$msgC <= $Total; $msgC++)
    {
        if($msgC > $Total) { break; }
        $line = fgets($fp,$this->BUFFER);
        $line = $this->strip_clf($line);
        if(strpos($line, '.') === 0)
        {
            $this->ERROR = "POP3 pop_list: " . _("Premature end of list");
            return false;
        }
        list($thisMsg,$msgSize) = preg_split('/\s+/',$line);
        settype($thisMsg,"integer");
        if($thisMsg != $msgC)
        {
            $MsgArray[$msgC] = "deleted";
        }
        else
        {
            $MsgArray[$msgC] = $msgSize;
        }
    }
    return $MsgArray;
}

User Contributed Notes

You must log in before being able to contribute a note or feedback.