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

📄 class.phpmailer.php

📁 国外很不错的一个开源OA系统Group-Office
💻 PHP
📖 第 1 页 / 共 4 页
字号:
        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() {    	global $GO_CONFIG;        $result = "";                // Set the boundaries        $uniq_id = md5(uniqid(time()));        $this->boundary[1] = "b1_" . $uniq_id;        $this->boundary[2] = "b2_" . $uniq_id;        $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", "Group-Office " . $GO_CONFIG->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     */    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     */    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     * @return string     */    function HeaderLine($name, $value) {        return $name . ": " . $value . $this->LE;    }    /**     * Returns a formatted mail line.     * @access private     * @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, $this->EncodeHeader($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, $this->EncodeHeader($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     * @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     * @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;

⌨️ 快捷键说明

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