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

📄 class.phpmailer.php

📁 国外很不错的一个开源OA系统Group-Office
💻 PHP
📖 第 1 页 / 共 4 页
字号:
            $this->ContentType = "multipart/alternative";        $this->error_count = 0; // reset errors        $this->SetMessageType();        $header .= $this->CreateHeader();        $body = $this->CreateBody();        if($body == "") { return false; }        // Choose the mailer        switch($this->Mailer)        {            case "sendmail":                $result = $this->SendmailSend($header, $body);                break;            case "mail":                $result = $this->MailSend($header, $body);                break;            case "smtp":                $result = $this->SmtpSend($header, $body);                break;            default:            $this->SetError($this->Mailer . $this->Lang("mailer_not_supported"));                $result = false;                break;        }        return $result;    }        /**	 * Creates message and returns mime.	 * @return bool     */    function GetMime()    {			$header = "";			$body = "";						$this->ErrorInfo = '';			$this->error_count=0;				$mailer = $this->Mailer;				$this->Mailer = 'smtp';				// Set whether the message is multipart/alternative			if(!empty($this->AltBody))				$this->ContentType = "multipart/alternative";				$this->SetMessageType();			$header .= $this->CreateHeader();			$body = $this->CreateBody();				$this->Mailer = $mailer;      if($body == "") { return false; }      return $header.$body;		}        /**     * Sends mail using the $Sendmail program.       * @access private     * @return bool     */    function SendmailSend($header, $body) {        if ($this->Sender != "")            $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     * @return bool     */    function MailSend($header, $body) {        $to = "";        for($i = 0; $i < count($this->to); $i++)        {            if($i != 0) { $to .= ", "; }            $to .= $this->to[$i][0];        }        if ($this->Sender != "" && strlen(ini_get("safe_mode"))< 1)        {            $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     * @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());                        if($this->SMTPAuth)                {                    if(!$this->smtp->Authenticate($this->Username,                                                   $this->Password))                    {                        $this->SetError($this->Lang("authenticate"));                        $this->smtp->Reset();                        $connection = false;                    }                }                $connection = true;            }            $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.     * @param string $lang_type Type of language (e.g. Portuguese: "br")     * @param string $lang_path Path to the language file directory     * @access public     * @return bool     */    function SetLanguage($lang_type, $lang_path = "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     * @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     * @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     * @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;        }

⌨️ 快捷键说明

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