📄 cmail.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 + -