又一个发送mime邮件的类 
2004-02-26 13 
    // 存成 "mime_mail.inc" ?案
    class mime_mail {
        var $parts;
        var $to;
        var $from;
        var $headers;
        var $subject;
        var $body;
        /*
         *     void mime_mail()
         *     ??建?者
         */
        function mime_mail() {
            $this->parts = array();
            $this->to = "";
            $this->from = "";
            $this->subject = "";
            $this->body = "";
            $this->headers = "";
        }
        /*
         *     void add_attachment(string message,
         *                         [string name],
         *                         [string ctype])
         *     ?附加物(附?)加入?件物件
         */
        function add_attachment($message, $name = "",
                    $ctype = "application/octet-stream") {
            $this->parts[] = array( "ctype" => $ctype,
                            "message" => $message,
                        "encode" => $encode,
                        "name" => $name);
        }
        /*
         *     void build_message(array part)
         *     建立 multipart ?件的?息部份
         */
        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: $encodingnn$messagen";
        }
        /*
         *     void build_multipart()
         *     建立一封 multipart ?件
         */
        function build_multipart() {
            $boundary = "b" . md5(uniqid(time()));
            $multipart = "Content-Type: multipart/mixed; " .
                     "boundary = $boundarynn" .
                     "This is a MIME encoded message.nn--$boundary";
            for ($i = sizeof($this->parts) - 1; $i >= 0; $i--) {
                $multipart .= "n" . $this->build_message($this->parts[$i]) . "--$boundary";
            }
            return $multipart . "--n"; 
        }
        /*
         *     string get_mail()
         *     ?回已?合完成的?件
         */
        function get_mail($complete = true) {
            $mime = "";
            if (!empty($this->from))
                $mime .= "From: " . $this->from . "n";
            if (!empty($this->headers))
                $mime .= $this->headers . "n";
            if ($complete) {
                if (!empty($this->to))
                    $mime .= "To: $this->ton";
                if (!empty($this->subject))
                    $mime .= "Subject: $this->subjectn";
            }
            if (!empty($this->body))
                $this->add_attachment($this->body, "", "text/plain");
            $mime .= "MIME-Version: 1.0n" . $this->build_multipart();
            return $mime;
        }
        /*
         *     void send()
         *     寄出?封信(最後一?被呼叫的函式)
         */
        function send() {
            $mime = $this->get_mail(false);
            mail($this->to, $this->subject, "", $mime);
        }
    }  // ???束
?>
/*
    include "mime_mail.inc";
    $filename     = "testfile.jpg";
    $content_type = "image/jpeg";
    # ?取磁碟?的 JPEG ?形
    $fd = fopen($filename, "r");
    $data = fread($fd, filesize($filename));
    fclose($fd);
  
    # 建立物件??
    $mail = new mime_mail;
    # ?定所有?目
    $mail->from    = "your@address.com";
    $mail->to      = "recipient@remote.net";
    $mail->subject = "?迎!";
    $mail->body    = "?是真正的?子?件?息,
                      ?然....你可以?成一行以上。";
    # 加上附?
    $mail->add_attachment($data, $filename, $content_type);
    # 送出?子?件
    $mail->send();
*/
?>
\
\
    // by Hsu
    if (!preg_match("!^(http://)?" . getenv("SERVER_NAME") . "!", getenv("HTTP_REFERER")) ││
        !preg_match("/^.+@.+..+/", $myemail)) {
        echo "n";
    } else {
        include "mime_mail.inc";
        $filename     = "php_logo.gif";
        $content_type = "image/gif";
        # ?取磁碟?的 JPEG ?形
        $fd = fopen($filename, "r");
        $data = fread($fd, filesize($filename));
        fclose($fd);
        # 建立物件??
        $mail = new mime_mail;
        # ?定所有?目
        $mail->from    = $myemail;
        $mail->to    = $myemail;
        $mail->subject    = "?迎!";
        $mail->body    = "?是真正的?子?件?息,n" .
                  "?然....你可以?成一行以上。";
        # 加上附?
        $mail->add_attachment($data, $filename, $content_type);
        # 送出?子?件
        $mail->send();
        echo "?件已送出,??查您的信箱。";
    }
?>
\
\
No comments:
Post a Comment