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

📄 cmail.php

📁 PHP4_0入门与提高源程序代码
💻 PHP
字号:
<?php
// 一个使用mail()函数发送邮件,并附加了附件功能的类。
class CMailFile {
	//类的变量
	var $subject;
	var $addr_to;
	var $text_body;
	var $text_encoded;
	var $mime_headers;
	var $mime_boundary = "--==================_846810060==_";
	var $smtp_headers;
	
    /******************************************************
function:	构造函数,把所给的参数赋给类中的变量。
$param:	$subject	邮件的主题
$param:	$to	目的邮件地址	
$param:	$from	来源邮件地址
$param:	$msg	邮件的内容	
$param:	$filename		附件文件名
$param:	$mimetyep	文件类型
$param:	$mime_filename	说明mime类型的文件
******************************************************/
	function CMailFile($subject,$to,$from,$msg,$filename,$mimetype = "application/octet-stream", $mime_filename = false) {
		$this->subject = $subject;
		$this->addr_to = $to;
		$this->smtp_headers = $this->write_smtpheaders($from);
		$this->text_body = $this->write_body($msg);
		$this->text_encoded = $this->attach_file($filename,$mimetype,$mime_filename);
		$this->mime_headers = $this->write_mimeheaders($filename, $mime_filename);
	}
	
/********************************************************
function:	把附件的内容附加到邮件内容中。它被构造函数调用。
$param:	$filename		附件文件名
$param:	$mimetype	mime类型
$param:	$mime_filename	存放mime类型的文件名
*********************************************************/
	function attach_file($filename,$mimetype,$mime_filename) {
		$encoded = $this->encode_file($filename);
		if ($mime_filename) $filename = $mime_filename;
		$out = "--" . $this->mime_boundary . "\n";
		$out = $out . "Content-type: " . $mimetype . "; name=\"$filename\";\n";		
		$out = $out . "Content-Transfer-Encoding: base64\n";
		$out = $out . "Content-disposition: attachment; filename=\"$filename\"\n\n";
		$out = $out . $encoded . "\n";
		$out = $out . "--" . $this->mime_boundary . "--" . "\n";
		return $out; 
// 使用-- 向email客户端说明附件内容结束
	}
	
	/**************************************
	function:	对附件内容进行编码
	$param:	$sourcefile	附件原文件
	**************************************/
	function encode_file($sourcefile) {
		//检查文件是否可读
		if (is_readable($sourcefile)) {
			//以读方式打开文件
			$fd = fopen($sourcefile, "r");
			//读取文件的内容
			$contents = fread($fd, filesize($sourcefile));
			//对文件内容编码
			$encoded = my_chunk_split(base64_encode($contents));
			fclose($fd);	
		}
		//返回编码后的文件内容
		return $encoded;
	}
	
	/*****************************************
function:	sendfile()调用PHP的mail函数,发送邮件。
*****************************************/
	function sendfile() {
		$headers = $this->smtp_headers . $this->mime_headers;		
		$message = $this->text_body . $this->text_encoded;
		if(mail($this->addr_to,$this->subject,$message,$headers))
			echo "mail have sent out.";
	}

	/*****************************
	function:	构造并输出邮件的内容。
	*****************************/
	function write_body($msgtext) {
		$out = "--" . $this->mime_boundary . "\n";
		$out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";
		$out = $out . $msgtext . "\n";
		return $out;
	}
	
	/********************************************
	function:	构造并输出mimeheaders
	$param:	$filename	文件名
	$param:	$mime_filename	存放mime类型的文件名
	*********************************************/
	function write_mimeheaders($filename, $mime_filename) {
		if ($mime_filename) $filename = $mime_filename;
		$out = "MIME-version: 1.0\n";
		$out = $out . "Content-type: multipart/mixed; ";
		$out = $out . "boundary=\"$this->mime_boundary\"\n";
		$out = $out . "Content-transfer-encoding: 7BIT\n";
		$out = $out . "X-attachments: $filename;\n\n";
		return $out;
	}
	
	/*******************************
	function:	构造并输出smtpheaders
	$param:	$addr_from	邮件来源地址
	********************************/
	function write_smtpheaders($addr_from) {
		$out = "From: $addr_from\n";
		$out = $out . "Reply-To: $addr_from\n";
		$out = $out . "X-Mailer: PHP3\n";
		$out = $out . "X-Sender: $addr_from\n";
		return $out;
	}
}

//mimetype举例:image/gif
// 类的用法:
//$mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$mimetype);
//$mailfile->sendfile();
?>

⌨️ 快捷键说明

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