⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class.smtp.php

📁 在综合英文版XOOPS 2.09, 2.091, 2.092 的基础上正式发布XOOPS 2.09中文版 XOOPS 2.09x 版主要是PHP5升级、bug修正和安全补正: 1 全面兼容PHP 5.
💻 PHP
📖 第 1 页 / 共 3 页
字号:
            }        }        # ok all the message data has been sent so lets get this        # over with aleady        fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF);        $rply = $this->get_lines();        $code = substr($rply,0,3);        if($this->do_debug >= 2) {            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;        }        if($code != 250) {            $this->error =                array("error" => "DATA not accepted from server",                      "smtp_code" => $code,                      "smtp_msg" => substr($rply,4));            if($this->do_debug >= 1) {                echo "SMTP -> ERROR: " . $this->error["error"] .                         ": " . $rply . $this->CRLF;            }            return false;        }        return true;    }    /**     * Expand takes the name and asks the server to list all the     * people who are members of the _list_. Expand will return     * back and array of the result or false if an error occurs.     * Each value in the array returned has the format of:     *     [ <full-name> <sp> ] <path>     * The definition of <path> is defined in rfc 821     *     * Implements rfc 821: EXPN <SP> <string> <CRLF>     *     * SMTP CODE SUCCESS: 250     * SMTP CODE FAILURE: 550     * SMTP CODE ERROR  : 500,501,502,504,421     * @access public     * @return string array     */    function Expand($name) {        $this->error = null; # so no confusion is caused        if(!$this->connected()) {            $this->error = array(                    "error" => "Called Expand() without being connected");            return false;        }        fputs($this->smtp_conn,"EXPN " . $name . $this->CRLF);        $rply = $this->get_lines();        $code = substr($rply,0,3);        if($this->do_debug >= 2) {            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;        }        if($code != 250) {            $this->error =                array("error" => "EXPN not accepted from server",                      "smtp_code" => $code,                      "smtp_msg" => substr($rply,4));            if($this->do_debug >= 1) {                echo "SMTP -> ERROR: " . $this->error["error"] .                         ": " . $rply . $this->CRLF;            }            return false;        }        # parse the reply and place in our array to return to user        $entries = explode($this->CRLF,$rply);        while(list(,$l) = @each($entries)) {            $list[] = substr($l,4);        }        return $list;    }    /**     * Sends the HELO command to the smtp server.     * This makes sure that we and the server are in     * the same known state.     *     * Implements from rfc 821: HELO <SP> <domain> <CRLF>     *     * SMTP CODE SUCCESS: 250     * SMTP CODE ERROR  : 500, 501, 504, 421     * @access public     * @return bool     */    function Hello($host="") {        $this->error = null; # so no confusion is caused        if(!$this->connected()) {            $this->error = array(                    "error" => "Called Hello() without being connected");            return false;        }        # if a hostname for the HELO wasn't specified determine        # a suitable one to send        if(empty($host)) {            # we need to determine some sort of appopiate default            # to send to the server            $host = "localhost";        }        fputs($this->smtp_conn,"HELO " . $host . $this->CRLF);        $rply = $this->get_lines();        $code = substr($rply,0,3);        if($this->do_debug >= 2) {            echo "SMTP -> FROM SERVER: " . $this->CRLF . $rply;        }        if($code != 250) {            $this->error =                array("error" => "HELO not accepted from server",                      "smtp_code" => $code,                      "smtp_msg" => substr($rply,4));            if($this->do_debug >= 1) {                echo "SMTP -> ERROR: " . $this->error["error"] .                         ": " . $rply . $this->CRLF;            }            return false;        }        $this->helo_rply = $rply;        return true;    }    /**     * Gets help information on the keyword specified. If the keyword     * is not specified then returns generic help, ussually contianing     * A list of keywords that help is available on. This function     * returns the results back to the user. It is up to the user to     * handle the returned data. If an error occurs then false is     * returned with $this->error set appropiately.     *     * Implements rfc 821: HELP [ <SP> <string> ] <CRLF>     *     * SMTP CODE SUCCESS: 211,214     * SMTP CODE ERROR  : 500,501,502,504,421     * @access public     * @return string     */    function Help($keyword="") {        $this->error = null; # to avoid confusion        if(!$this->connected()) {            $this->error = array(                    "error" => "Called Help() without being connected");            return false;        }        $extra = "";        if(!empty($keyword)) {            $extra = " " . $keyword;        }        fputs($this->smtp_conn,"HELP" . $extra . $this->CRLF);        $rply = $this->get_lines();        $code = substr($rply,0,3);        if($this->do_debug >= 2) {            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;        }        if($code != 211 && $code != 214) {            $this->error =                array("error" => "HELP not accepted from server",                      "smtp_code" => $code,                      "smtp_msg" => substr($rply,4));            if($this->do_debug >= 1) {                echo "SMTP -> ERROR: " . $this->error["error"] .                         ": " . $rply . $this->CRLF;            }            return false;        }        return $rply;    }    /**     * Starts a mail transaction from the email address specified in     * $from. Returns true if successful or false otherwise. If True     * the mail transaction is started and then one or more Recipient     * commands may be called followed by a Data command.     *     * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>     *     * SMTP CODE SUCCESS: 250     * SMTP CODE SUCCESS: 552,451,452     * SMTP CODE SUCCESS: 500,501,421     * @access public     * @return bool     */    function Mail($from) {        $this->error = null; # so no confusion is caused        if(!$this->connected()) {            $this->error = array(                    "error" => "Called Mail() without being connected");            return false;        }        fputs($this->smtp_conn,"MAIL FROM:" . $from . $this->CRLF);        $rply = $this->get_lines();        $code = substr($rply,0,3);        if($this->do_debug >= 2) {            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;        }        if($code != 250) {            $this->error =                array("error" => "MAIL not accepted from server",                      "smtp_code" => $code,                      "smtp_msg" => substr($rply,4));            if($this->do_debug >= 1) {                echo "SMTP -> ERROR: " . $this->error["error"] .                         ": " . $rply . $this->CRLF;            }            return false;        }        return true;    }    /**     * Sends the command NOOP to the SMTP server.     *     * Implements from rfc 821: NOOP <CRLF>     *     * SMTP CODE SUCCESS: 250     * SMTP CODE ERROR  : 500, 421     * @access public     * @return bool     */    function Noop() {        $this->error = null; # so no confusion is caused        if(!$this->connected()) {            $this->error = array(                    "error" => "Called Noop() without being connected");            return false;        }        fputs($this->smtp_conn,"NOOP" . $this->CRLF);        $rply = $this->get_lines();        $code = substr($rply,0,3);        if($this->do_debug >= 2) {            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;        }        if($code != 250) {            $this->error =                array("error" => "NOOP not accepted from server",                      "smtp_code" => $code,                      "smtp_msg" => substr($rply,4));            if($this->do_debug >= 1) {                echo "SMTP -> ERROR: " . $this->error["error"] .                         ": " . $rply . $this->CRLF;            }            return false;        }        return true;    }    /**     * Sends the quit command to the server and then closes the socket     * if there is no error or the $close_on_error argument is true.     *     * Implements from rfc 821: QUIT <CRLF>     *     * SMTP CODE SUCCESS: 221     * SMTP CODE ERROR  : 500     * @access public     * @return bool     */    function Quit($close_on_error=true) {        $this->error = null; # so there is no confusion        if(!$this->connected()) {            $this->error = array(                    "error" => "Called Quit() without being connected");            return false;        }        # send the quit command to the server        fputs($this->smtp_conn,"quit" . $this->CRLF);        # get any good-bye messages        $byemsg = $this->get_lines();        if($this->do_debug >= 2) {            echo "SMTP -> FROM SERVER:" . $this->CRLF . $byemsg;        }        $rval = true;        $e = null;        $code = substr($byemsg,0,3);        if($code != 221) {            # use e as a tmp var cause Close will overwrite $this->error            $e = array("error" => "SMTP server rejected quit command",                       "smtp_code" => $code,                       "smtp_rply" => substr($byemsg,4));            $rval = false;            if($this->do_debug >= 1) {                echo "SMTP -> ERROR: " . $e["error"] . ": " .                         $byemsg . $this->CRLF;            }        }        if(empty($e) || $close_on_error) {            $this->Close();        }        return $rval;    }    /**     * Sends the command RCPT to the SMTP server with the TO: argument of $to.     * Returns true if the recipient was accepted false if it was rejected.     *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -