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

📄 class.phpmailer.php

📁 一个通用的php网站的会员系统和通行证系统
💻 PHP
📖 第 1 页 / 共 4 页
字号:
            $sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender);        } else {            $sendmail = sprintf("%s -oi -t", $this->Sendmail);        }        if (!@$mail = popen($sendmail, "w")) {            $this->SetError($this->Lang("execute") . $this->Sendmail);            return false;        }        fputs($mail, $header);        fputs($mail, $body);        $result = pclose($mail) >> 8 & 0xFF;        if ($result != 0) {            $this->SetError($this->Lang("execute") . $this->Sendmail);            return false;        }        return true;    }    /**     * Sends mail using the PHP mail() function.     *     * @access private     *     * @param string $header Header     * @param string $body   Body     *     * @return bool     */    function MailSend($header, $body)    {        $to = "";        for ($i = 0; $i < count($this->to); $i++)        {            if ($i != 0) {                $to .= ", ";            }            // This will not use the name in the header using            // mail.            // If you want to force phpmailer to append the name            // you should substitute the following line with this            // $to .= $this->AddrFormat($this->to[$i]);            // The to parameter should not be an address            // in the form of "Something <someone@example.com>".            // The mail command may not parse this properly while            // talking with the MTA (Particularly under Windows).            $to .= $this->to[$i][0];        }        if ($this->Sender != "" && ini_get("safe_mode") == 0 && strtolower(ini_get("safe_mode")) != "on") {            $old_from = ini_get("sendmail_from");            ini_set("sendmail_from", $this->Sender);            $params = sprintf("-oi -f %s", $this->Sender);            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body,                        $header, $params);        } else {            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header);        }        if (isset($old_from)) {            ini_set("sendmail_from", $old_from);        }        if (!$rt) {            $this->SetError($this->Lang("instantiate"));            return false;        }        return true;    }    /**     * Sends mail via SMTP using PhpSMTP (Author:     * Chris Ryan).  Returns bool.  Returns false if there is a     * bad MAIL FROM, RCPT, or DATA input.     * @access private     *     * @param string $header Header     * @param string $body   Body     *     * @return bool     */    function SmtpSend($header, $body)    {        include_once $this->PluginDir . "class.smtp.php";        $error = "";        $bad_rcpt = array();        if (!$this->SmtpConnect()) {            return false;        }        $smtp_from = ($this->Sender == "") ? $this->From : $this->Sender;        if (!$this->smtp->Mail($smtp_from)) {            $error = $this->Lang("from_failed") . $smtp_from;            $this->SetError($error);            $this->smtp->Reset();            return false;        }        // Attempt to send attach all recipients        for ($i = 0; $i < count($this->to); $i++)        {            if (!$this->smtp->Recipient($this->to[$i][0])) {                $bad_rcpt[] = $this->to[$i][0];            }        }        for ($i = 0; $i < count($this->cc); $i++)        {            if (!$this->smtp->Recipient($this->cc[$i][0])) {                $bad_rcpt[] = $this->cc[$i][0];            }        }        for ($i = 0; $i < count($this->bcc); $i++)        {            if (!$this->smtp->Recipient($this->bcc[$i][0])) {                $bad_rcpt[] = $this->bcc[$i][0];            }        }        if (count($bad_rcpt) > 0) { // Create error message            for ($i = 0; $i < count($bad_rcpt); $i++)            {                if ($i != 0) {                    $error .= ", ";                }                $error .= $bad_rcpt[$i];            }            $error = $this->Lang("recipients_failed") . $error;            $this->SetError($error);            $this->smtp->Reset();            return false;        }        if (!$this->smtp->Data($header . $body)) {            $this->SetError($this->Lang("data_not_accepted"));            $this->smtp->Reset();            return false;        }        if ($this->SMTPKeepAlive == true) {            $this->smtp->Reset();        } else {            $this->SmtpClose();        }        return true;    }    /**     * Initiates a connection to an SMTP server.  Returns false if the     * operation failed.     *     * @access private     * @return bool     */    function SmtpConnect()    {        if ($this->smtp == null) {            $this->smtp = new SMTP();        }        $this->smtp->do_debug = $this->SMTPDebug;        $hosts = explode(";", $this->Host);        $index = 0;        $connection = ($this->smtp->Connected());        // Retry while there is no connection        while ($index < count($hosts) && $connection == false)        {            if (strstr($hosts[$index], ":")) {                list($host, $port) = explode(":", $hosts[$index]);            } else {                $host = $hosts[$index];                $port = $this->Port;            }            if ($this->smtp->Connect($host, $port, $this->Timeout)) {                if ($this->Helo != '') {                    $this->smtp->Hello($this->Helo);                } else {                    $this->smtp->Hello($this->ServerHostname());                }                $connection = true;                if ($this->SMTPAuth) {                    if (!$this->smtp->Authenticate($this->Username,                                                  $this->Password)) {                        $this->SetError($this->Lang("authenticate"));                        $this->smtp->Reset();                        $connection = false;                    }                }            }            $index++;        }        if (!$connection) {            $this->SetError($this->Lang("connect_host"));        }        return $connection;    }    /**     * Closes the active SMTP session if one exists.     *     * @return void     */    function SmtpClose()    {        if ($this->smtp != null) {            if ($this->smtp->Connected()) {                $this->smtp->Quit();                $this->smtp->Close();            }        }    }    /**     * Sets the language for all class error messages.  Returns false     * if it cannot load the language file.  The default language type     * is English.     *     * @access public     *     * @param string $lang_type Type of language (e.g. Portuguese: "br")     * @param string $lang_path Path to the language file directory     *     * @return bool     */    function SetLanguage($lang_type, $lang_path = null)    {        if ($lang_path === null) {            $lang_path = dirname(__FILE__).'/language/';        }        if (file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php')) {            include $lang_path.'phpmailer.lang-'.$lang_type.'.php';        } else if (file_exists($lang_path.'phpmailer.lang-en.php')) {            include $lang_path.'phpmailer.lang-en.php';        } else {            $this->SetError("Could not load language file");            return false;        }        $this->language = $PHPMAILER_LANG;        return true;    }    /////////////////////////////////////////////////    // MESSAGE CREATION METHODS    /////////////////////////////////////////////////    /**     * Creates recipient headers.     *     * @access private     *     * @param string $type Type     * @param array  $addr Address     *     * @return string     */    function AddrAppend($type, $addr)    {        $addr_str = $type . ": ";        $addr_str .= $this->AddrFormat($addr[0]);        if (count($addr) > 1) {            for ($i = 1; $i < count($addr); $i++)            {                $addr_str .= ", " . $this->AddrFormat($addr[$i]);            }        }        $addr_str .= $this->LE;        return $addr_str;    }    /**     * Formats an address correctly.     *     * @access private     *     * @param array $addr Address     *     * @return string     */    function AddrFormat($addr)    {        if (empty($addr[1])) {            $formatted = $addr[0];        } else {            $formatted = $this->EncodeHeader($addr[1], 'phrase') . " <" .                         $addr[0] . ">";        }        return $formatted;    }    /**     * Wraps message for use with mailers that do not     * automatically perform wrapping and for quoted-printable.     * Original written by philippe.     *     * @access private     *     * @param string $message Message     * @param int    $length  Length of message     * @param bool   $qp_mode Optional     *     * @return string     */    function WrapText($message, $length, $qp_mode = false)    {        $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;        $message = $this->FixEOL($message);        if (substr($message, -1) == $this->LE) {            $message = substr($message, 0, -1);        }        $line = explode($this->LE, $message);        $message = "";        for ($i=0 ;$i < count($line); $i++)        {            $line_part = explode(" ", $line[$i]);            $buf = "";            for ($e = 0; $e<count($line_part); $e++)            {                $word = $line_part[$e];                if ($qp_mode and (strlen($word) > $length)) {                    $space_left = $length - strlen($buf) - 1;                    if ($e != 0) {                        if ($space_left > 20) {                            $len = $space_left;                            if (substr($word, $len - 1, 1) == "=") {                                $len--;                            } elseif (substr($word, $len - 2, 1) == "=") {                                $len -= 2;                            }                            $part = substr($word, 0, $len);                            $word = substr($word, $len);                            $buf .= " " . $part;                            $message .= $buf . sprintf("=%s", $this->LE);                        } else {                            $message .= $buf . $soft_break;                        }                        $buf = "";                    }                    while (strlen($word) > 0)                    {                        $len = $length;                        if (substr($word, $len - 1, 1) == "=") {                            $len--;                        } elseif (substr($word, $len - 2, 1) == "=") {                            $len -= 2;                        }                        $part = substr($word, 0, $len);                        $word = substr($word, $len);                        if (strlen($word) > 0) {                            $message .= $part . sprintf("=%s", $this->LE);                        } else {                            $buf = $part;                        }                    }                } else {                    $buf_o = $buf;                    $buf .= ($e == 0) ? $word : (" " . $word);                    if (strlen($buf) > $length and $buf_o != "") {                        $message .= $buf_o . $soft_break;                        $buf = $word;                    }                }            }            $message .= $buf . $this->LE;        }        return $message;    }    /**     * Set the body wrapping.     *     * @access private     * @return void     */    function SetWordWrap()    {        if ($this->WordWrap < 1) {            return;        }        switch($this->message_type)        {        case "alt":            // fall through        case "alt_attachments":            $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);            break;        default:            $this->Body = $this->WrapText($this->Body, $this->WordWrap);            break;        }    }    /**     * Assembles message header.     *     * @access private     * @return string     */    function CreateHeader()    {        $result = "";        // Set the boundaries        $uniq_id = md5(uniqid(time()));        $this->boundary[1] = "b1_" . $uniq_id;        $this->boundary[2] = "b2_" . $uniq_id;

⌨️ 快捷键说明

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