Esempio n. 1
0
                $filename = $message_data->date . '/' . $message_id . '/message';
                break;
        }
        if (!@file_exists($quarantine_dir . '/' . $filename)) {
            die("Error: file not found\n");
        }
        $file = file_get_contents($quarantine_dir . '/' . $filename);
    }
}
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true;
$params['input'] = $file;
$Mail_mimeDecode = new Mail_mimeDecode($file);
$structure = $Mail_mimeDecode->decode($params);
$mime_struct = $Mail_mimeDecode->getMimeNumbers($structure);
// Make sure that part being requested actually exists
if (isset($_GET['part'])) {
    if (!isset($mime_struct[$_GET['part']])) {
        die("Part " . sanitizeInput($_GET['part']) . " not found\n");
    }
}
function decode_structure($structure)
{
    $type = $structure->ctype_primary . "/" . $structure->ctype_secondary;
    switch ($type) {
        case "text/plain":
            /*
            if (isset ($structure->ctype_parameters['charset']) &&
                strtolower($structure->ctype_parameters['charset']) == 'utf-8'
            ) {
 /**
  * Given the output of the above function, this will return an
  * array of references to the parts, indexed by mime number.
  *
  * @param  object $structure   The structure to go through
  * @param  string $mime_number Internal use only.
  * @return array               Mime numbers
  */
 function &getMimeNumbers(&$structure, $no_refs = false, $mime_number = '', $prepend = '')
 {
     $return = array();
     if (!empty($structure->parts)) {
         if ($mime_number != '') {
             $structure->mime_id = $prepend . $mime_number;
             $return[$prepend . $mime_number] =& $structure;
         }
         for ($i = 0; $i < count($structure->parts); $i++) {
             if (!empty($structure->headers['content-type']) and substr(strtolower($structure->headers['content-type']), 0, 8) == 'message/') {
                 $prepend = $prepend . $mime_number . '.';
                 $_mime_number = '';
             } else {
                 $_mime_number = $mime_number == '' ? $i + 1 : sprintf('%s.%s', $mime_number, $i + 1);
             }
             $arr =& Mail_mimeDecode::getMimeNumbers($structure->parts[$i], $no_refs, $_mime_number, $prepend);
             foreach ($arr as $key => $val) {
                 $no_refs ? $return[$key] = '' : ($return[$key] =& $arr[$key]);
             }
         }
     } else {
         if ($mime_number == '') {
             $mime_number = '1';
         }
         $structure->mime_id = $prepend . $mime_number;
         $no_refs ? $return[$prepend . $mime_number] = '' : ($return[$prepend . $mime_number] =& $structure);
     }
     return $return;
 }