我贴,已测试通过
<?
class mime_mail
{
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body; function mime_mail(){
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
} function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
$this->parts[] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}
function build_message($part) {
$message = $part["message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part["ctype"].
($part["name"]?"; name = \"".$part["name"]."\"" : "").
"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
} function build_multipart(){
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary"; for($i = sizeof($this->parts)-1; $i >= 0; $i--) {
$multipart .= "\n".$this->build_message($this->parts[$i])."--$boundary";
}
return $multipart.= "--\n";
}
function send()
{
$mime = "";
if (!empty($this->from))
$mime .= "From: ".$this->from."\n";
if (!empty($this->headers))
$mime .= $this->headers."\n"; if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain");
$mime .= "MIME-Version: 1.0\n".$this->build_multipart(); mail($this->to, $this->subject, "", $mime);
}
}; // end of class //$attachment = fread(fopen("test.jpg", "r"), filesize("test.jpg")); //这里也得去掉,但是你的test.jpg必须存在
$mail = new mime_mail();
$mail->from = "[email protected]"; //这是出处
$mail->headers = "Errors-To: [email protected]"; $mail->to = "[email protected]"; //这是戏子的邮箱,在这里你可以改成你的邮箱发一下 $mail->subject = 'test...';//这是标题
$mail->body = 'ok!'; //这是内容
//$mail->add_attachment("$attachment", "test.jpg", "image/jpeg"); //去掉注释,你就以发附件
$mail->send();
print "ok,成功完成!";
?>
这是发附件
<?
class mime_mail
{
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body; function mime_mail(){
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
} function add_attachment($message, $name = "", $ctype = "application/octet-stream") {
$this->parts[] = array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
}
function build_message($part) {
$message = $part["message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part["ctype"].
($part["name"]?"; name = \"".$part["name"]."\"" : "").
"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
} function build_multipart(){
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary"; for($i = sizeof($this->parts)-1; $i >= 0; $i--) {
$multipart .= "\n".$this->build_message($this->parts[$i])."--$boundary";
}
return $multipart.= "--\n";
}
function send()
{
$mime = "";
if (!empty($this->from))
$mime .= "From: ".$this->from."\n";
if (!empty($this->headers))
$mime .= $this->headers."\n"; if (!empty($this->body))
$this->add_attachment($this->body, "", "text/plain");
$mime .= "MIME-Version: 1.0\n".$this->build_multipart(); mail($this->to, $this->subject, "", $mime);
}
}; // end of class //$attachment = fread(fopen("test.jpg", "r"), filesize("test.jpg")); //这里也得去掉,但是你的test.jpg必须存在
$mail = new mime_mail();
$mail->from = "[email protected]"; //这是出处
$mail->headers = "Errors-To: [email protected]"; $mail->to = "[email protected]"; //这是戏子的邮箱,在这里你可以改成你的邮箱发一下 $mail->subject = 'test...';//这是标题
$mail->body = 'ok!'; //这是内容
//$mail->add_attachment("$attachment", "test.jpg", "image/jpeg"); //去掉注释,你就以发附件
$mail->send();
print "ok,成功完成!";
?>
这是发附件
你的程序我可以使用
上面附件的内容已经固定,如果可以让用户浏览文件来做为附件该怎么走呀?
怎么读信件的内容和附件呢?
至于接收我就不知道了,等待高手.
{
if (!$structure)
{
$structure = imap_fetchstructure($stream, $msg_number);
}
if($structure)
{
if(strtolower ($mime_type) == get_mime_type($structure))
{
if(!$part_number)
{
$part_number = "1";
}
if ($structure->ifdisposition)
{
if (strtolower ($structure->disposition) == "attachment") return false;
}
$text = imap_fetchbody($stream, $msg_number, $part_number);
if($structure->encoding == 3)
{
return imap_base64($text);
} else if($structure->encoding == 4)
{
return imap_qprint($text);
} else
{
return $text;
}
}
if($structure->type == 1) /* multipart */
{
while(list($index, $sub_structure) = each($structure->parts))
{
if($part_number)
{
$prefix = $part_number . '.';
}
$data = get_part($stream, $msg_number, $mime_type, $sub_structure, $prefix . ($index + 1));
if($data)
{
return $data;
}
}
}
}
return false;
}
{
$primary_mime_type = array("TEXT", "MULTIPART", "MESSAGE", "APPLICATION", "AUDIO", "IMAGE", "VIDEO", "OTHER");
if ($structure->subtype)
{
return strtolower ($primary_mime_type[(int) $structure->type] . '/' . $structure->subtype);
}
return "TEXT/PLAIN";
}
$text = get_part ($stream, $number, "TEXT/PLAIN");
......
我在发附件的时候不成功,但可以发信
发附件的时候总是出错,你看这样对不?。
$attachment = fread(fopen("E:\\test\\upload\\test.jpg", "r"), filesize("E:\\test\\upload\\test.jpg")); 。。
$mail->add_attachment("$attachment", "E:\\test\\upload\\test.jpg", "image/jpeg");
。
发送是系统弹出一个内存错误,说一个地址不能为读什么的
然后还apache提示:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request
怎么回事?