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

📄 class.phpmailer.php

📁 一个通用的php网站的会员系统和通行证系统
💻 PHP
📖 第 1 页 / 共 4 页
字号:
        $result .= $this->HeaderLine("Date", $this->RFCDate());        if ($this->Sender == "") {            $result .= $this->HeaderLine("Return-Path", trim($this->From));        } else {            $result .= $this->HeaderLine("Return-Path", trim($this->Sender));        }        // To be created automatically by mail()        if ($this->Mailer != "mail") {            if (count($this->to) > 0) {                $result .= $this->AddrAppend("To", $this->to);            } else if (count($this->cc) == 0) {                $result .= $this->HeaderLine("To", "undisclosed-recipients:;");            }            if (count($this->cc) > 0) {                $result .= $this->AddrAppend("Cc", $this->cc);            }        }        $from       = array();        $from[0][0] = trim($this->From);        $from[0][1] = $this->FromName;        $result     .= $this->AddrAppend("From", $from);        // sendmail and mail() extract Bcc from the header before sending        if ((($this->Mailer == "sendmail") || ($this->Mailer == "mail")) && (count($this->bcc) > 0)) {            $result .= $this->AddrAppend("Bcc", $this->bcc);        }        if (count($this->ReplyTo) > 0) {            $result .= $this->AddrAppend("Reply-to", $this->ReplyTo);        }        // mail() sets the subject itself        if ($this->Mailer != "mail") {            $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));        }        $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);        $result .= $this->HeaderLine("X-Priority", $this->Priority);        $result .= $this->HeaderLine("X-Mailer", "PHPMailer [version " . $this->Version . "]");        if ($this->ConfirmReadingTo != "") {            $result .= $this->HeaderLine("Disposition-Notification-To",                       "<" . trim($this->ConfirmReadingTo) . ">");        }        // Add custom headers        for ($index = 0; $index < count($this->CustomHeader); $index++) {            $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]),                       $this->EncodeHeader(trim($this->CustomHeader[$index][1])));        }        $result .= $this->HeaderLine("MIME-Version", "1.0");        switch($this->message_type)        {        case "plain":            $result .= $this->HeaderLine("Content-Transfer-Encoding", $this->Encoding);            $result .= sprintf("Content-Type: %s; charset=\"%s\"",                                    $this->ContentType, $this->CharSet);            break;        case "attachments":            // fall through        case "alt_attachments":            if ($this->InlineImageExists()) {                $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s",                                "multipart/related", $this->LE, $this->LE,                                    $this->boundary[1], $this->LE);            } else {                $result .= $this->HeaderLine("Content-Type", "multipart/mixed;");                $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');            }            break;        case "alt":            $result .= $this->HeaderLine("Content-Type", "multipart/alternative;");            $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');            break;        }        if ($this->Mailer != "mail") {            $result .= $this->LE.$this->LE;        }        return $result;    }    /**     * Assembles the message body.  Returns an empty string on failure.     *     * @access private     * @return string     */    function CreateBody()    {        $result = "";        $this->SetWordWrap();        switch($this->message_type)        {        case "alt":            $result .= $this->GetBoundary($this->boundary[1], "",                                          "text/plain", "");            $result .= $this->EncodeString($this->AltBody, $this->Encoding);            $result .= $this->LE.$this->LE;            $result .= $this->GetBoundary($this->boundary[1], "",                                          "text/html", "");            $result .= $this->EncodeString($this->Body, $this->Encoding);            $result .= $this->LE.$this->LE;            $result .= $this->EndBoundary($this->boundary[1]);            break;        case "plain":            $result .= $this->EncodeString($this->Body, $this->Encoding);            break;        case "attachments":            $result .= $this->GetBoundary($this->boundary[1], "", "", "");            $result .= $this->EncodeString($this->Body, $this->Encoding);            $result .= $this->LE;            $result .= $this->AttachAll();            break;        case "alt_attachments":            $result .= sprintf("--%s%s", $this->boundary[1], $this->LE);            $result .= sprintf("Content-Type: %s;%s" .                               "\tboundary=\"%s\"%s",                               "multipart/alternative", $this->LE,                               $this->boundary[2], $this->LE.$this->LE);            // Create text body            $result .= $this->GetBoundary($this->boundary[2], "",                                         "text/plain", "") . $this->LE;            $result .= $this->EncodeString($this->AltBody, $this->Encoding);            $result .= $this->LE.$this->LE;            // Create the HTML body            $result .= $this->GetBoundary($this->boundary[2], "",                                         "text/html", "") . $this->LE;            $result .= $this->EncodeString($this->Body, $this->Encoding);            $result .= $this->LE.$this->LE;            $result .= $this->EndBoundary($this->boundary[2]);            $result .= $this->AttachAll();            break;        }        if ($this->IsError()) {            $result = "";        }        return $result;    }    /**     * Returns the start of a message boundary.     *     * @access private     *     * @param string $boundary    Boundary     * @param string $charSet     Charset     * @param string $contentType Content-Type     * @param string $encoding    Encoding     *     * @return string     */    function GetBoundary($boundary, $charSet, $contentType, $encoding)    {        $result = "";        if ($charSet == "") {            $charSet = $this->CharSet;        }        if ($contentType == "") {            $contentType = $this->ContentType;        }        if ($encoding == "") {            $encoding = $this->Encoding;        }        $result .= $this->TextLine("--" . $boundary);        $result .= sprintf("Content-Type: %s; charset=\"%s\"",                            $contentType, $charSet);        $result .= $this->LE;        $result .= $this->HeaderLine("Content-Transfer-Encoding", $encoding);        $result .= $this->LE;        return $result;    }    /**     * Returns the end of a message boundary.     *     * @access private     *     * @param string $boundary Boundary     *     * @return string     */    function EndBoundary($boundary)    {        return $this->LE . "--" . $boundary . "--" . $this->LE;    }    /**     * Sets the message type.     *     * @access private     * @return void     */    function SetMessageType()    {        if (count($this->attachment) < 1 && strlen($this->AltBody) < 1) {            $this->message_type = "plain";        } else {            if (count($this->attachment) > 0)                $this->message_type = "attachments";            if (strlen($this->AltBody) > 0 && count($this->attachment) < 1)                $this->message_type = "alt";            if (strlen($this->AltBody) > 0 && count($this->attachment) > 0)                $this->message_type = "alt_attachments";        }    }    /**     * Returns a formatted header line.     *     * @access private     *     * @param string $name  Name of header     * @param string $value Value of header     *     * @return string     */    function HeaderLine($name, $value)    {        return $name . ": " . $value . $this->LE;    }    /**     * Returns a formatted mail line.     *     * @access private     *     * @param string $value Value of textline     *     * @return string     */    function TextLine($value)    {        return $value . $this->LE;    }    /////////////////////////////////////////////////    // ATTACHMENT METHODS    /////////////////////////////////////////////////    /**     * Adds an attachment from a path on the filesystem.     * Returns false if the file could not be found     * or accessed.     *     * @param string $path     Path to the attachment.     * @param string $name     Overrides the attachment name.     * @param string $encoding File encoding (see $Encoding).     * @param string $type     File extension (MIME) type.     *     * @return bool     */    function AddAttachment($path, $name = "", $encoding = "base64",                           $type = "application/octet-stream")    {        if (!@is_file($path)) {            $this->SetError($this->Lang("file_access") . $path);            return false;        }        $filename = basename($path);        if ($name == "") {            $name = $filename;        }        $cur = count($this->attachment);        $this->attachment[$cur][0] = $path;        $this->attachment[$cur][1] = $filename;        $this->attachment[$cur][2] = $name;        $this->attachment[$cur][3] = $encoding;        $this->attachment[$cur][4] = $type;        $this->attachment[$cur][5] = false; // isStringAttachment        $this->attachment[$cur][6] = "attachment";        $this->attachment[$cur][7] = 0;        return true;    }    /**     * Attaches all fs, string, and binary attachments to the message.     * Returns an empty string on failure.     *     * @access private     * @return string     */    function AttachAll()    {        // Return text of body        $mime = array();        // Add all attachments        for ($i = 0; $i < count($this->attachment); $i++)        {            // Check for string attachment            $bString = $this->attachment[$i][5];            if ($bString)                $string = $this->attachment[$i][0];            else                $path = $this->attachment[$i][0];            $filename    = $this->attachment[$i][1];            $name        = $this->attachment[$i][2];            $encoding    = $this->attachment[$i][3];            $type        = $this->attachment[$i][4];            $disposition = $this->attachment[$i][6];            $cid         = $this->attachment[$i][7];            $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);            $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $name, $this->LE);            $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);            if ($disposition == "inline")                $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);            $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s",                              $disposition, $name, $this->LE.$this->LE);            // Encode as string attachment            if ($bString) {                $mime[] = $this->EncodeString($string, $encoding);                if ($this->IsError()) {                    return "";                }                $mime[] = $this->LE.$this->LE;            } else {                $mime[] = $this->EncodeFile($path, $encoding);                if ($this->IsError()) {                    return "";                }                $mime[] = $this->LE.$this->LE;            }        }        $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE);        return join("", $mime);    }    /**     * Encodes attachment in requested format.  Returns an     * empty string on failure.     *     * @access private     *     * @param string $path     Path     * @param string $encoding Encoding     *     * @return string     */    function EncodeFile ($path, $encoding = "base64")    {        if (!@$fd = fopen($path, "rb")) {            $this->SetError($this->Lang("file_open") . $path);            return "";        }        $magic_quotes = get_magic_quotes_runtime();        set_magic_quotes_runtime(0);        $file_buffer = fread($fd, filesize($path));        $file_buffer = $this->EncodeString($file_buffer, $encoding);        fclose($fd);        set_magic_quotes_runtime($magic_quotes);        return $file_buffer;    }    /**     * Encodes string to requested format. Returns an     * empty string on failure.     *     * @access private     *     * @param string $str      String     * @param string $encoding Encoding     *     * @return string     */    function EncodeString ($str, $encoding = "base64")    {        $encoded = "";        switch(strtolower($encoding))        {        case "base64":            // chunk_split is found in PHP >= 3.0.6            $encoded = chunk_split(base64_encode($str), 76, $this->LE);            break;        case "7bit":        case "8bit":            $encoded = $this->FixEOL($str);            if (substr($encoded, -(strlen($this->LE))) != $this->LE)              $encoded .= $this->LE;            break;        case "binary":            $encoded = $str;            break;        case "quoted-printable":            $encoded = $this->EncodeQP($str);            break;        default:            $this->SetError($this->Lang("encoding") . $encoding);            break;        }        return $encoded;    }    /**     * Encode a header string to best of Q, B, quoted or none.     *     * @access private     *     * @param string $str      String     * @param string $position Position     *     * @return string     */    function EncodeHeader ($str, $position = 'text')    {

⌨️ 快捷键说明

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