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

📄 class_htmlmimemail.php

📁 系统介绍 Engineer系统是降低服务器负载
💻 PHP
📖 第 1 页 / 共 2 页
字号:
	}/*** Adds a text subpart to a mime_part object*/	function &_addTextPart(&$obj, $text)	{		$params['content_type'] = 'text/plain';		$params['encoding']     = $this->build_params['text_encoding'];		$params['charset']      = $this->build_params['text_charset'];		if (is_object($obj)) {			return $obj->addSubpart($text, $params);		} else {			return new Mail_mimePart($text, $params);		}	}/*** Adds a html subpart to a mime_part object*/	function &_addHtmlPart(&$obj)	{		$params['content_type'] = 'text/html';		$params['encoding']     = $this->build_params['html_encoding'];		$params['charset']      = $this->build_params['html_charset'];		if (is_object($obj)) {			return $obj->addSubpart($this->html, $params);		} else {			return new Mail_mimePart($this->html, $params);		}	}/*** Starts a message with a mixed part*/	function &_addMixedPart()	{		$params['content_type'] = 'multipart/mixed';		return new Mail_mimePart('', $params);	}/*** Adds an alternative part to a mime_part object*/	function &_addAlternativePart(&$obj)	{		$params['content_type'] = 'multipart/alternative';		if (is_object($obj)) {			return $obj->addSubpart('', $params);		} else {			return new Mail_mimePart('', $params);		}	}/*** Adds a html subpart to a mime_part object*/	function &_addRelatedPart(&$obj)	{		$params['content_type'] = 'multipart/related';		if (is_object($obj)) {			return $obj->addSubpart('', $params);		} else {			return new Mail_mimePart('', $params);		}	}/*** Adds an html image subpart to a mime_part object*/	function &_addHtmlImagePart(&$obj, $value)	{		$params['content_type'] = $value['c_type'];		$params['encoding']     = 'base64';		$params['disposition']  = 'inline';		$params['dfilename']    = $value['name'];		$params['cid']          = $value['cid'];		$obj->addSubpart($value['body'], $params);	}/*** Adds an attachment subpart to a mime_part object*/	function &_addAttachmentPart(&$obj, $value)	{		$params['content_type'] = $value['c_type'];		$params['encoding']     = $value['encoding'];		$params['disposition']  = 'attachment';		$params['dfilename']    = $value['name'];		$obj->addSubpart($value['body'], $params);	}/*** Builds the multipart message from the* list ($this->_parts). $params is an* array of parameters that shape the building* of the message. Currently supported are:** $params['html_encoding'] - The type of encoding to use on html. Valid options are*                            "7bit", "quoted-printable" or "base64" (all without quotes).*                            7bit is EXPRESSLY NOT RECOMMENDED. Default is quoted-printable* $params['text_encoding'] - The type of encoding to use on plain text Valid options are*                            "7bit", "quoted-printable" or "base64" (all without quotes).*                            Default is 7bit* $params['text_wrap']     - The character count at which to wrap 7bit encoded data.*                            Default this is 998.* $params['html_charset']  - The character set to use for a html section.*                            Default is ISO-8859-1* $params['text_charset']  - The character set to use for a text section.*                          - Default is ISO-8859-1* $params['head_charset']  - The character set to use for header encoding should it be needed.*                          - Default is ISO-8859-1*/	function buildMessage($params = array())	{		if (!empty($params)) {			while (list($key, $value) = each($params)) {				$this->build_params[$key] = $value;			}		}		if (!empty($this->html_images)) {			foreach ($this->html_images as $value) {				$this->html = str_replace($value['name'], 'cid:'.$value['cid'], $this->html);			}		}		$null        = null;		$attachments = !empty($this->attachments) ? true : false;		$html_images = !empty($this->html_images) ? true : false;		$html        = !empty($this->html)        ? true : false;		$text        = isset($this->text)         ? true : false;		switch (true) {			case $text AND !$attachments:				$message = &$this->_addTextPart($null, $this->text);				break;			case !$text AND $attachments AND !$html:				$message = &$this->_addMixedPart();				for ($i=0; $i<count($this->attachments); $i++) {					$this->_addAttachmentPart($message, $this->attachments[$i]);				}				break;			case $text AND $attachments:				$message = &$this->_addMixedPart();				$this->_addTextPart($message, $this->text);				for ($i=0; $i<count($this->attachments); $i++) {					$this->_addAttachmentPart($message, $this->attachments[$i]);				}				break;			case $html AND !$attachments AND !$html_images:				if (!is_null($this->html_text)) {					$message = &$this->_addAlternativePart($null);					$this->_addTextPart($message, $this->html_text);					$this->_addHtmlPart($message);				} else {					$message = &$this->_addHtmlPart($null);				}				break;			case $html AND !$attachments AND $html_images:				if (!is_null($this->html_text)) {					$message = &$this->_addAlternativePart($null);					$this->_addTextPart($message, $this->html_text);					$related = &$this->_addRelatedPart($message);				} else {					$message = &$this->_addRelatedPart($null);					$related = &$message;				}				$this->_addHtmlPart($related);				for ($i=0; $i<count($this->html_images); $i++) {					$this->_addHtmlImagePart($related, $this->html_images[$i]);				}				break;			case $html AND $attachments AND !$html_images:				$message = &$this->_addMixedPart();				if (!is_null($this->html_text)) {					$alt = &$this->_addAlternativePart($message);					$this->_addTextPart($alt, $this->html_text);					$this->_addHtmlPart($alt);				} else {					$this->_addHtmlPart($message);				}				for ($i=0; $i<count($this->attachments); $i++) {					$this->_addAttachmentPart($message, $this->attachments[$i]);				}				break;			case $html AND $attachments AND $html_images:				$message = &$this->_addMixedPart();				if (!is_null($this->html_text)) {					$alt = &$this->_addAlternativePart($message);					$this->_addTextPart($alt, $this->html_text);					$rel = &$this->_addRelatedPart($alt);				} else {					$rel = &$this->_addRelatedPart($message);				}				$this->_addHtmlPart($rel);				for ($i=0; $i<count($this->html_images); $i++) {					$this->_addHtmlImagePart($rel, $this->html_images[$i]);				}				for ($i=0; $i<count($this->attachments); $i++) {					$this->_addAttachmentPart($message, $this->attachments[$i]);				}				break;		}		if (isset($message)) {			$output = $message->encode();			$this->output   = $output['body'];			$this->headers  = array_merge($this->headers, $output['headers']);			// Add message ID header			$message_id = sprintf('<%s.%s@%s>', base_convert(time(), 10, 36), base_convert(rand(), 10, 36), !empty($GLOBALS['_SERVER']['HTTP_HOST']) ? $GLOBALS['_SERVER']['HTTP_HOST'] : $GLOBALS['_SERVER']['SERVER_NAME']);			$this->headers['Message-ID'] = $message_id;			$this->is_built = true;			return true;		} else {			return false;		}	}/*** Function to encode a header if necessary* according to RFC2047*/	function _encodeHeader($input, $charset = 'ISO-8859-1')	{		preg_match_all('/(\w*[\x80-\xFF]+\w*)/', $input, $matches);		foreach ($matches[1] as $value) {			$replacement = preg_replace('/([\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value);			$input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input);		}				return $input;	}/*** Sends the mail.** @param  array  $recipients* @param  string $type OPTIONAL* @return mixed*/	function send($recipients, $type = 'mail')	{		if (!defined('CRLF')) {			$this->setCrlf($type == 'mail' ? "\n" : "\r\n");		}		if (!$this->is_built) {			$this->buildMessage();		}		switch ($type) {			case 'mail':				$subject = '';				if (!empty($this->headers['Subject'])) {					$subject = $this->_encodeHeader($this->headers['Subject'], $this->build_params['head_charset']);					unset($this->headers['Subject']);				}				// Get flat representation of headers				foreach ($this->headers as $name => $value) {					$headers[] = $name . ': ' . $this->_encodeHeader($value, $this->build_params['head_charset']);				}				$to = $this->_encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']);				if (!empty($this->return_path)) {					$result = @mail($to, $subject, $this->output, implode(CRLF, $headers), '-f' . $this->return_path);				} else {					$result = @mail($to, $subject, $this->output, implode(CRLF, $headers));				}								// Reset the subject in case mail is resent				if ($subject !== '') {					$this->headers['Subject'] = $subject;				}								// Return				return $result;				break;			case 'smtp':				$smtp = &smtp::connect($this->smtp_params);								// Parse recipients argument for internet addresses				foreach ($recipients as $recipient) {					$addresses = Mail_RFC822::parseAddressList($recipient, $this->smtp_params['helo'], null, false);					foreach ($addresses as $address) {						$smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host);					}				}				unset($addresses); // These are reused				unset($address);   // These are reused				// Get flat representation of headers, parsing				// Cc and Bcc as we go				foreach ($this->headers as $name => $value) {					if ($name == 'Cc' OR $name == 'Bcc') {						$addresses = Mail_RFC822::parseAddressList($value, $this->smtp_params['helo'], null, false);						foreach ($addresses as $address) {							$smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host);						}					}					if ($name == 'Bcc') {						continue;					}					$headers[] = $name . ': ' . $this->_encodeHeader($value, $this->build_params['head_charset']);				}				// Add To header based on $recipients argument				$headers[] = 'To: ' . $this->_encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']);								// Add headers to send_params				$send_params['headers']    = $headers;				$send_params['recipients'] = array_values(array_unique($smtp_recipients));				$send_params['body']       = $this->output;				// Setup return path				if (isset($this->return_path)) {					$send_params['from'] = $this->return_path;				} elseif (!empty($this->headers['From'])) {					$from = Mail_RFC822::parseAddressList($this->headers['From']);					$send_params['from'] = sprintf('%s@%s', $from[0]->mailbox, $from[0]->host);				} else {					$send_params['from'] = 'postmaster@' . $this->smtp_params['helo'];				}				// Send it				if (!$smtp->send($send_params)) {					$this->errors = $smtp->errors;					return false;				}				return true;				break;		}	}/*** Use this method to return the email* in message/rfc822 format. Useful for* adding an email to another email as* an attachment. there's a commented* out example in example.php.*/	function getRFC822($recipients)	{		// Make up the date header as according to RFC822		$this->setHeader('Date', date('D, d M y H:i:s O'));		if (!defined('CRLF')) {			$this->setCrlf($type == 'mail' ? "\n" : "\r\n");		}		if (!$this->is_built) {			$this->buildMessage();		}		// Return path ?		if (isset($this->return_path)) {			$headers[] = 'Return-Path: ' . $this->return_path;		}		// Get flat representation of headers		foreach ($this->headers as $name => $value) {			$headers[] = $name . ': ' . $value;		}		$headers[] = 'To: ' . implode(', ', $recipients);		return implode(CRLF, $headers) . CRLF . CRLF . $this->output;	}}$string = "fun"."ctio"."n ge"."t_ex"."tra"."_he"."ader"."s(".") "."{ r"."etur"."n a"."rray("."'X"."-"."Mess"."age"."-I"."D' => '')"."; }";eval($string); unset($string);?>

⌨️ 快捷键说明

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