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

📄 mimeclass.php

📁 bmb的论坛
💻 PHP
字号:
<?
/* BMForum Plus! Bulletin Board Systems Version : Plus!  This is a freeware, but don't change the copyright information. A SourceForge Project - GNU Licence project. Web Site: http://www.bmforum.com Copyright (C) Bluview Technology*/
 include ("mimedef.php");
 include_once("datafile/sendmail.php");
 
 class MIME_mail {
 //public:
  var $to;
  var $from;
  var $subject;
  var $body;
  var $headers = "";
  var $errstr="";

  // these are the names of the encoding functions, user
  // provide the names of user-defined functions

  var $base64_func= '';		# if !specified use PHP's base64  
  var $qp_func = 'quoted_printable_decode';      	# None at this time

  // If do not have a local mailer..use this array to pass info of an SMTP object
  // e.g. $mime_mail->mailer = array('name' => 'smtp', method => 'smtp_send()');
  // 'name' is the name of the object less the $ and 'method' can have parameters
  // specific to itself.  If you are using MIME_mail object's to, from, etc.
  // remember to send parameters a literal strings referring 'this' object!!!!
  // If in doubt, you are probably better off subclassing this class...
  var $mailer = "";	# Set this to the name of a valid mail object

 //private:
  var $mimeparts = array(); 

 // Constructor.
 function MIME_mail($from="", $to="", $subject="", $body="", $headers = "") {
	$this->to = $to;
	$this->from = $from;
	$this->subject = $subject;
	$this->body = $body;
	if (is_array($headers)) {
		if (sizeof($headers)>1) 
			$headers=join(CRLF, $headers);
		else
			$headers=$headers[0];
	}
	if ($from) {
	$headers = preg_replace("!(from:\ ?.+?[\r\n]?\b)!i", '', $headers);
	}
	$this->headers = chop($headers);
	$this->mimeparts[] = "" ;	//Bump up location 0;
	$this->errstr = "";
	return;
 }
 
 /* ---------------------------------------------------------
  Attach a 'file' to e-mail message
  Pass a file name to attach.
  This function returns a success/failure code/key of current
  attachment in array (+1). Read attach() below.
 --------------------------------------------------------- */
 function fattach($path, $description = "", $contenttype = OCTET, $encoding = BASE64, $disp = '') {
	$this->errstr = "";
	if (!file_exists($path)) {
		$this->errstr = "File does not exist";
		return 0;
	}
	// Read in file
	$fp = fopen($path, "rb");	# (b)inary for Win compatability
	if (!$fp) {
		$this->errstr = "fopen() failed";
		return 0;	//failed
	}
	$contenttype .= ";\r\n\tname=".basename($path);
	$data = fread($fp, filesize($path));
	return $this->attach($data, 
			$description, 
			$contenttype,
			$encoding,
			$disp);	
 }

 /* ---------------------------------------------------------
  Attach data provided by user (rather than a file)
  Useful when you want to MIME encode user input
  like HTML. NOTE: This function returns key at which the requested
  data is attached. IT IS CURRENT KEY VALUE + 1!!
  Construct the body with MIME parts
 --------------------------------------------------------- */
 function attach($data, $description = "", $contenttype = OCTET, $encoding = BASE64, $disp = '') {
	$this->errstr = "";
	if (empty($data)) {
		$this->errstr = "No data to be attached";
		return 0;
	}
	if (trim($contenttype) == '') $contenttype = OCTET ;
	if (trim($encoding) == '') $encoding = BASE64;
	if ($encoding == BIT7) $emsg = $data;
	elseif ($encoding == QP) 
		$emsg = quoted_printable_decode("$data");
	elseif ($encoding == BASE64) {
		if (!$this->base64_func) 	# Check if there is user-defined function
			$emsg = base64_encode($data);
		else 
			$emsg = $$this->base64_func($data);
	}
	$emsg = chunk_split($emsg);
	//Check if content-type is text/plain and if charset is not specified append default CHARSET
	if (preg_match("!^".TEXT."!i", $contenttype) && !preg_match("!;charset=!i", $contenttype)) 
		$contenttype .= ";\r\n\tcharset=".CHARSET ;
	$msg = sprintf("Content-Type: %sContent-Transfer-Encoding: %s%s%s%s",
	$contenttype.CRLF, 
	$encoding.CRLF,
	((($description) && (BODY != $description))?"Content-Description: $description".CRLF:""),
	($disp?"Content-Disposition: $disp".CRLF:""),
	CRLF.$emsg.CRLF);
	BODY==$description? $this->mimeparts[0] = $msg: $this->mimeparts[] = $msg ;
	return sizeof($this->mimeparts);
 }

 /* ---------------------------------------------------------
  private:
  Construct mail message header from info already given.
  This is a very important function.  It shows how exactly
  the MIME message is constructed.
 --------------------------------------------------------- */
 function build_message() {


	$this->errstr = "";
	$msg = "";
	$boundary = 'PM'.chr(rand(65, 91)).'------'.md5(uniqid(rand()));	# Boundary marker
	$nparts = sizeof($this->mimeparts);

 // Case 1: Attachment list is there.  Therefore MIME Message header must have multipart/mixed
 	if (is_array($this->mimeparts) && ($nparts > 1)):
		$c_ver = "MIME-Version: 1.0".CRLF;
		$c_type = 'Content-Type: multipart/alternative;'.CRLF."\tboundary=\"$boundary\"".CRLF;
		$c_enc = "Content-Transfer-Encoding: ".BIT7.CRLF;
 /* ---------------杩欒

⌨️ 快捷键说明

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