protected function _decodeTnefData($data)
{
$wrapper = new Horde_Mime_Part();
$wrapper->setType('multipart/mixed');
if (!$data instanceof Horde_Mime_Part) {
$mime_part = $this->getMimePart($data);
} else {
$mime_part = $data;
}
$tnef_parser = Horde_Compress::factory('Tnef');
try {
$tnef_data = $tnef_parser->decompress($mime_part->getContents());
} catch (Horde_Compress_Exception $e) {
return false;
}
if (!count($tnef_data)) {
return false;
}
reset($tnef_data);
while (list(, $data) = each($tnef_data)) {
$tmp_part = new Horde_Mime_Part();
$tmp_part->setName($data['name']);
$tmp_part->setDescription($data['name']);
$tmp_part->setContents($data['stream']);
$type = $data['type'] . '/' . $data['subtype'];
if (in_array($type, array('application/octet-stream', 'application/base64'))) {
$type = Horde_Mime_Magic::filenameToMIME($data['name']);
}
$tmp_part->setType($type);
$wrapper->addPart($tmp_part);
}
return $wrapper;
}