日期:2011-01-01  浏览次数:20430 次


<?php
// $Horde: horde/lib/MIME.php,v 1.63 2001/08/08 21:00:27 chuck Exp $

$mime_types =
array(
      TYPETEXT => 'text', 'text' => TYPETEXT,
      TYPEMULTIPART => 'multipart', 'multipart' => TYPEMULTIPART,
      TYPEMESSAGE => 'message', 'message' => TYPEMESSAGE,
      TYPEAPPLICATION => 'application', 'application' => TYPEAPPLICATION,
      TYPEAUDIO => 'audio', 'audio' => TYPEAUDIO,
      TYPEIMAGE => 'image', 'image' => TYPEIMAGE,
      TYPEVIDEO => 'video', 'video' => TYPEVIDEO,
      TYPEOTHER => 'unknown', 'unknown' => TYPEOTHER
      );

$mime_encodings =
array(
      ENC7B99v => '7bit', '7bit' => ENC7B99v,
      ENC8B99v => '8bit', '8bit' => ENC8B99v,
      ENCBINARY => 'binary', 'binary' => ENCBINARY,
      ENCBASE64 => 'base64', 'base64' => ENCBASE64,
      ENCQUOTEDPRINTABLE => 'quoted-printable', 'quoted-printable' => ENCQUOTEDPRINTABLE,
      ENCOTHER => 'unknown', 'unknown' => ENCOTHER
      );


/**
* The MIME:: class provides methods for dealing with MIME standards.
*
* @author  Chuck Hagenbuch <chuck@horde.org>
* @version $Revision: 1.64 $
* @since   Horde 1.3
* @package horde.mime
*/
class MIME {
    
    /**
     * Determine if a string contains 8-bit characters.
     * @access private
     *
     * @param string $string  The string to check.
     * @return boolean        true if it does, false if it doesn't.
     */
    function is8bit($string)
    {
        if (is_string($string)) {
            for ($i = 0; $i < strlen($string); $i++) {
                if (ord($string[$i]) >> 7)
                    return true;
            }
            return false;
        }
        return false;
    }
    
    /**
     * Encode a string containing non-ascii characters according to RFC 2047.
     *
     * @param string $text    The text to encode.
     * @param string $charset (optional) The character set of the text.
     * @param boolean $outer  Is this the final iteration?
 &nb