[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как распознать zip архив при работе с почтой imap?
SerginhoLD
Мне нужно из почты из конкретного письма выдернуть файл, ну это как бы не проблема.
Проблема по данным о самом файле.

Вот прикреплен zip архив к письму, внутри .xls файл с прайс листом, друго ничего внутри нет.
Вывожу я по нему данные:
part: stdClass Object
(
[type] => 3
[encoding] => 3
[ifsubtype] => 1
[subtype] => VND.MS-EXCEL
[ifdescription] => 0
[ifid] => 0
[bytes] => 1351520
[ifdisposition] => 1
[disposition] => attachment
[ifdparameters] => 1
[dparameters] => Array
(
[0] => stdClass Object
(
[attribute] => filename
[value] => =?UTF-8?B?0J/RgNCw0LnRgV/Qu9C40YHRgi54bHM=?=
)

)

[ifparameters] => 1
[parameters] => Array
(
[0] => stdClass Object
(
[attribute] => name
[value] => =?UTF-8?B?0J/RgNCw0LnRgV/Qu9C40YHRgi54bHM=?=
)

)

)

И что я вижу..
subtype равен VND.MS-EXCEL
никакой не архив

Далее раскодирую имя файла
...
// =?UTF-8?B?0J/RgNCw0LnRgV/Qu9C40YHRgi54bHM=?=
mb_decode_mimeheader($filename);
// выводит: Прайс_лист.xls


Как так и почему?

p.s. весь код:
Свернутый текст


$email = '******';
$pass = '******';

$connect = imap_open('{imap.yandex.ru:143/imap/notls}', $email, $pass);

if (!$connect)
{
echo 'Failed';
die;
}

$date = date("j F Y");
$mails = imap_search($connect, 'ON "'.$date.'"');

# http://stackoverflow.com/questions/2649579/downloading-attachments-to-directory-with-imap-i n-php-randomly-works

foreach ($mails as $email_number)
{
$structure = imap_fetchstructure($connect, $email_number, FT_UID);
//echo '<pre>structure: ' . htmlspecialchars(print_r($structure, 1)) . '</pre>';

$attachments = array();

//echo '<pre>partS: ' . htmlspecialchars(print_r($structure->parts, 1)) . '</pre>';

for ($i = 0; $i < count($structure->parts); $i++)
{
if ($structure->parts[$i]->subtype == 'VND.MS-EXCEL')
{
echo '<pre>part: ' . htmlspecialchars(print_r($structure->parts[$i], 1)) . '</pre>';

foreach ($structure->parts[$i]->dparameters as $object)
{
if ($object->attribute == 'filename')
{
$attachments[$i]['is_attachment'] = true;
$attachments[$i]['filename'] = $object->value;
$attachments[$i]['real_filename'] = mb_decode_mimeheader($object->value);
}
}


if ($attachments[$i]['is_attachment'])
{
$attachments[$i]['attachment'] = imap_fetchbody($connect, $email_number, $i+1);
//echo '<pre>attachment: ' . htmlspecialchars(print_r($attachments[$i], 1)) . '</pre>';

if ($structure->parts[$i]->encoding == 3)
{
$attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);

//$ext = substr($attachments[$i]['real_filename'], strrpos($attachments[$i]['real_filename'], '.') + 1);
//echo '<pre>$ext: ' . htmlspecialchars(print_r($ext, 1)) . '</pre>';
//echo '<pre>attachment: ' . htmlspecialchars(print_r($attachments[$i]['attachment'], 1)) . '</pre>';


echo '<pre>real_filename: ' . htmlspecialchars(print_r($attachments[$i]['real_filename'], 1)) . '</pre>';

$file = $_SERVER['DOCUMENT_ROOT'] . '/imap/test.xls';
file_put_contents($file, $attachments[$i]['attachment']);
}
}
}
}


// текст письма
//$test1 = imap_fetchbody($connect, $email_number, 1);
//echo '<pre>$test1: ' . htmlspecialchars(print_r($test1, 1)) . '</pre>';

}



_____________
"internet explorer всех правильней отображает страницы" ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.