function getStructurePartType($structure, $part) { $part_a = self::getPartArray($structure, $part); if (!empty($part_a)) { if (is_array($part_a[0])) return 'multipart'; else if ($part_a[0]) return $part_a[0]; } return 'other'; } function getStructurePartEncoding($structure, $part) { $part_a = self::getPartArray($structure, $part); if ($part_a) { if (!is_array($part_a[0])) return $part_a[5]; } return ''; } function getStructurePartCharset($structure, $part) { $part_a = self::getPartArray($structure, $part); if ($part_a) { if (is_array($part_a[0])) return ''; else { if (is_array($part_a[2])) { $name = ''; while (list($key, $val) = each($part_a[2])) if (strcasecmp($val, 'charset') == 0) return $part_a[2][$key+1]; } } } return ''; } function getStructurePartArray($a, $part) { if (!is_array($a)) { return false; } if (strpos($part, '.') > 0) { $original_part = $part; $pos = strpos($part, '.'); $rest = substr($original_part, $pos+1); $part = substr($original_part, 0, $pos); if ((strcasecmp($a[0], 'message') == 0) && (strcasecmp($a[1], 'rfc822') == 0)) { $a = $a[8]; } return self::getPartArray($a[$part-1], $rest); } else if ($part>0) { if (!is_array($a[0]) && (strcasecmp($a[0], 'message') == 0) && (strcasecmp($a[1], 'rfc822') == 0)) { $a = $a[8]; } if (is_array($a[$part-1])) return $a[$part-1]; else return $a; } else if (($part == 0) || (empty($part))) { return $a; } }