资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 编程开发 >
Advertisement
文章正文

我自己借用精华区里的MIME类写了一个基本的发信小东东(2)_编程

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   
  • php没有安全漏洞,呵呵.要注意设置 
  • 转贴:开发大型PHP项目的方法(四) 
  • Php安装使用问答(一) 
  • 在GD中输出汉字的函数的改进 
  • LDAP安装 
  • 一个在PHP中利用递归实现论坛分级显示的例子(为了简单起见,我将分页显示部分去掉了) 
  • 好几位朋友都问到,如何在redhat自带的apache中加入PHP的支持,所以我找来了这篇文章 
  • 一个简单的(也可以说是不完全的)IMAP类和应用。(三) 
  • require和include经典一例抛析 
  • 设置相同名称的cookie,如何返回它们的值,请看: 
  • 页面导航:

    正文内容:
    sendmail.php4

    <?
    //加载发送附件的类
    require(html_mime_mail.inc);

    if($update!=""){ //如果带附件
     
     //上传附件
     if(!file_exists("c:/ftptmp/".$myfile_name)){
     if(copy($myfile,"c:/ftptmp/".$myfile_name)){
     //读取附件
     $attachment = fread($fp = fopen("c:/ftptmp/".$myfile_name, r), filesize($myfile));
     fclose($fp);
     //unlink("c:/ftptmp/".$myfile_name);删掉
     }
     else {
     echo "上传文件失败!";
     exit();
     }
     }
     else{
     echo "文件重名!";
     exit();
     }
     
     
     //新建一个类的实例,并加入附件
     $mail = new html_mime_mail();
     $mail->add_attachment($attachment, $myfile_name, application/octet-stream);
     
     /*---------------------这段示范了如何发html信件---------------------------------------
     $filename = background.gif;
     $backgrnd = fread($fp = fopen($filename, r), filesize($filename));
     fclose($fp);

     $text = this is a test.;
     $html = <html><body background="background.gif"><font face="verdana, arial" color="#ff0000"> success!</font><p></body></html>;
     
     $mail->add_html_image($backgrnd, background.gif, image/gif);
     $mail->add_html($html, $text);
     -------------------------------------------------------------------------------------*/
     
     //读取正文,将信件封装并发送
     $mail->body=$bodytext;
     $mail->build_message();

     $backvalue=$mail->send( ,$receivemailbox, ,$sendmailbox,$subject, );
     
     //发送提示信息
     echo "<script language=javascript>alert(发信ok,按确定返回!);window.location=default.htm</script>";
    }
    else{ //如果不带附件
     $backvalue=mail($receivemailbox,$subject,$bodytext,"from:" . $sendmailbox . "\nreply-to:" . $sendmailbox . "\nx-mailer: php/" . phpversion());
     
     if ($result) {
     echo "<script language=javascript>alert(发信ok,按确定返回!);window.location=default.htm</script>";
     }
     else{
     echo "<script language=javascript>backvalue=window.confirm(发信失败!可能是服务器太忙!是否要重发?);if(backvalue){location.reload()}else{window.location=default.htm}</script>";
     }
    }

    ?>

    html_mime_mail.inc 这个类是精华区里有的。我借来一用

    <?
    class html_mime_mail{

    var $headers;
    var $body;
    var $multipart;
    var $mime;
    var $html;
    var $html_text;
    var $html_images = array();
    var $cids = array();
    var $do_html;
    var $parts = array();

    /***************************************
    ** constructor function. sets the headers
    ** if supplied.
    ***************************************/
    function html_mime_mail($headers = ){
    $this->headers = $headers;
    }

    /***************************************
    ** adds a html part to the mail.
    ** also replaces image names with
    ** content-ids.
    ***************************************/
    function add_html($html, $text){
    $this->do_html = 1;
    $this->html = $html;
    $this->html_text = $text;
    if(is_array($this->html_images) and count($this->html_images) > 0){
    for($i=0; $i<count($this->html_images); $i++){
    $this->html = ereg_replace($this->html_images[$i][name], cid:.$this->html_images[$i][cid], $this->html);
    }
    }
    }

    /***************************************
    ** builds html part of email.
    ***************************************/
    function build_html($orig_boundary){
    $sec_boundary = =_.md5(uniqid(time()));
    $thr_boundary = =_.md5(uniqid(time()));

    if(!is_array($this->html_images)){
    $this->multipart.= --.$orig_boundary."\r\n";
    $this->multipart.= content-type: multipart/alternative; boundary=".$sec_boundary."\"\r\n\r\n\r\n";

    $this->multipart.= --.$sec_boundary."\r\n";
    $this->multipart.= content-type: text/plain."\r\n";
    $this->multipart.= content-transfer-encoding: 7bit."\r\n\r\n";
    $this->multipart.= $this->html_text."\r\n\r\n";

    $this->multipart.= --.$sec_boundary."\r\n";
    $this->multipart.= content-type: text/html."\r\n";
    $this->multipart.= content-transfer-encoding: 7bit."\r\n\r\n";
    $this->multipart.= $this->html."\r\n\r\n";
    $this->multipart.= --.$sec_boundary."--\r\n\r\n";
    }else{
    $this->multipart.= --.$orig_boundary."\r\n";
    $this->multipart.= content-type: multipart/related; boundary=".$sec_boundary."\"\r\n\r\n\r\n";

    $this->multipart.= --.$sec_boundary."\r\n";
    $this->multipart.= content-type: multipart/alternative; boundary=".$thr_boundary."\"\r\n\r\n\r\n";

    $this->multipart.= --.$thr_boundary."\r\n";
    $this->multipart.= content-type: text/plain."\r\n";
    $this->multipart.= content-transfer-encoding: 7bit."\r\n\r\n";
    $this->multipart.= $this->html_text."\r\n\r\n";

    $this->multipart.= --.$thr_boundary."\r\n";
    $this->multipart.= content-type: text/html."\r\n";
    $this->multipart.= content-transfer-encoding: 7bit."\r\n\r\n";
    $this->multipart.= $this->html."\r\n\r\n";
    $this->multipart.= --.$thr_boundary."--\r\n\r\n";

    for($i=0; $i<count($this->html_images); $i++){
    $this->multipart.= --.$sec_boundary."\r\n";
    $this->build_html_image($i);
    }

    $this->multipart.= "--".$sec_boundary."--\r\n\r\n";
    }
    }
    /***************************************
    ** adds an image to the list of embedded
    ** images.
    ***************************************/
    function add_html_image($file, $name = , $c_type=application/octet-stream){
    $this->html_images[] = array( body => $file,
    name => $name,
    c_type => $c_type,
    cid => md5(uniqid(time())) );
    }


    /***************************************
    ** adds a file to the list of attachments.
    ***************************************/
    function add_attachment($file, $name = , $c_type=application/octet-stream){
    $this->parts[] = array( body => $file,
    name => $name,
    c_type => $c_type );
    }

    /***************************************
    ** builds an embedded image part of an
    ** html mail.
    ***************************************/
    function build_html_image($i){
    $this->multipart.= content-type: .$this->html_images[$i][c_type];

    if($this->html_images[$i][name] != ) $this->multipart .= ; name=".$this->html_images[$i][name]."\"\r\n";
    else $this->multipart .= "\r\n";

    $this->multipart.= content-id: <.$this->html_images[$i][cid].">\r\n";
    $this->multipart.= content-transfer-encoding: base64."\r\n\r\n";
    $this->multipart.= chunk_split(base64_encode($this->html_images[$i][body]))."\r\n";
    }

    /***************************************
    ** builds a single part of a multipart
    ** message.
    ***************************************/
    function build_part($i){
    $message_part = ;
    $message_part.= content-type: .$this->parts[$i][c_type];
    if($this->parts[$i][name] != )
    $message_part .= ; name=".$this->parts[$i][name]."\"\r\n";
    else
    $message_part .= "\r\n";

    // determine content encoding.
    if($this->parts[$i][c_type] == text/plain){
    $message_part.= content-transfer-encoding: 7bit."\r\n\r\n";
    $message_part.= $this->parts[$i][body]."\r\n";
    }else{
    $message_part.= content-transfer-encoding: base64."\r\n";
    $message_part.= content-disposition: attachment; filename=".$this->parts[$i][name]."\"\r\n\r\n";
    $message_part.= chunk_split(base64_encode($this->parts[$i][body]))."\r\n";
    }

    return $message_part;
    }

    /***************************************
    ** builds the multipart message from the
    ** list ($this->parts).
    ***************************************/
    function build_message(){
    $boundary = =_.md5(uniqid(time()));

    $this->headers.= "mime-version: 1.0\r\n";
    $this->headers.= "content-type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
    $this->multipart = ;
    $this->multipart.= "this is a mime encoded message.\r\ncreated by html_mime_mail.class.\r\nsee http://www.heyes-computing.net/scripts/ for a copy.\r\n\r\n";

    if(isset($this->do_html) and $this->do_html == 1) $this->build_html($boundary);
    if(isset($this->body) and $this->body != ) $this->parts[] = array(body => $this->body, name => , c_type => text/plain);

    for($i=(count($this->parts)-1); $i>=0; $i--){
    $this->multipart.= --.$boundary."\r\n".$this->build_part($i);
    }

    $this->mime = $this->multipart."--".$boundary."--\r\n";
    }

    /***************************************
    ** sends the mail.
    ***************************************/
    function send($to_name, $to_addr, $from_name, $from_addr, $subject = , $headers = ){

    if($to_name != ) $to = ".$to_name." <.$to_addr.>;
    else $to = $to_addr;
    if($from_name != ) $from = ".$from_name." <.$from_addr.>;
    else $from = $from_addr;
    $this->headers.= from: .$from."\r\n";
    //$this->headers.= $headers;
    mail($to, $subject, $this->mime, $this->headers);
    }

    /***************************************
    ** use this method to deliver using direct
    ** smtp connection. relies upon manuel lemos
    ** smtp mail delivery class available at:
    ** http://phpclasses.upperdesign.com
    **
    ** void smtp_send( string *name* of smtp object,
    ** string from address,
    ** array to addresses,
    ** array headers,
    ** string the body)
    ***************************************/
    function smtp_send($smtp_obj, $from_addr, $to_addr){
    global $$smtp_obj;
    $smtp_obj = $$smtp_obj;

    if(substr($this->headers, -2) == "\r\n") $this->headers = substr($this->headers,0,-2);
    $this->headers = explode("\r\n", $this->headers);

    $smtp_obj->sendmessage($from_addr, $to_addr, $this->headers, $this->mime);
    }

    } // end of class.
    ?>

     

     
    热门推荐笔记本: 夏新笔记本
    相关文章:
    webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
    ©2007 popbb.net All Rights Reserved