首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 實作 POP3 郵件接收(一):協議流程與 Socket 通訊類別

     編輯:PHP 相關知識

POP3 協議流程回顧

TCP 110 → USER/PASS 認證 → STAT/LIST 統計 → RETR 下載 → QUIT 登出。需處理多行回應(以 .\r\n 結尾)。

PHP Socket 實作核心

class POP3 {
    var $host, $port = 110, $timeout = 30;
    var $socket, $errno, $errstr;

    function connect() {
        $this->socket = fsockopen($this->host, $this->port, $this->errno, $this->errstr, $this->timeout);
        return $this->socket && $this->getResponse(); // +OK
    }

    function login($user, $pass) {
        $this->send("USER $user");
        $this->send("PASS $pass");
        return $this->checkOK();
    }

    function getList() {
        $this->send("LIST");
        $lines = $this->getMultiline();
        // 解析 "1 750" 格式
        return $lines;
    }

    function getMessage($num) {
        $this->send("RETR $num");
        return $this->getMultiline(); // 完整郵件原始內容
    }

    function quit() {
        $this->send("QUIT");
        fclose($this->socket);
    }

    // 內部:發送指令、讀取單行/多行回應、檢查 +OK
}

關鍵實作細節

  • fgets($socket, 1024) 逐行讀取
  • 多行回應以 .\r\n 結束,需循環讀取直到遇到單獨的點
  • 錯誤處理:檢查回應首碼 +OK / -ERR
  • 逾時設定:stream_set_timeout()

下一篇將整合 MIME 解碼類別,完成完整收信程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved