我贴,已测试通过
<?
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,成功完成!";
?>
这是发附件

解决方案 »

  1.   

    谢谢  xizi2002(☆☆戏☆子☆☆) 
    你的程序我可以使用
    上面附件的内容已经固定,如果可以让用户浏览文件来做为附件该怎么走呀?
      

  2.   

    还有上面方法 is a MIME encoded message?
    怎么读信件的内容和附件呢?
      

  3.   

    如果浏览的话就上传到你的服务器,然后带入到这个程序打开发送,发送完,del就可以了,去搜索一下,能找到很多这样的。
    至于接收我就不知道了,等待高手.
      

  4.   

    function get_part (&$stream, &$msg_number, $mime_type, $structure = false, $part_number = false)

    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; 
    }
      

  5.   

    function get_mime_type (&$structure)

    $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"; 
      

  6.   

    $stream = imap_open("{$server}$folder",$account,$password);
    $text = get_part ($stream, $number, "TEXT/PLAIN");
    ......
      

  7.   

    xizi2002(☆☆戏☆子☆☆) 
    我在发附件的时候不成功,但可以发信
    发附件的时候总是出错,你看这样对不?。
    $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
    怎么回事?