Доброго времени суток, у меня есть скрипт который заходит на почтовый ящик и собирает почту и если там есть вложения то сохраняет их.. Собственно все работает, но есть одно "НО".. Есть такая программа как outlook у нее есть возможно отправить какие-то файлы воржением и прям в самом теле какой-нибудь скриншот, по отдельности файлы нормально сохраняются а если все это вместе придет, то сам скриншот который был в теле письма сохраняется пустым, хотя имя сохраняется нормально... собственно вот массив данных Код (Text): ( [type] => 1 [encoding] => 0 [ifsubtype] => 1 [subtype] => MIXED [ifdescription] => 0 [ifid] => 0 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => boundary [value] => ----=_NextPart_000_0284_01CD4148.772DE680 ) ) [parts] => Array ( [0] => stdClass Object ( [type] => 1 [encoding] => 0 [ifsubtype] => 1 [subtype] => RELATED [ifdescription] => 0 [ifid] => 0 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => boundary [value] => ----=_NextPart_001_0285_01CD4148.772DE680 ) ) [parts] => Array ( [0] => stdClass Object ( [type] => 1 [encoding] => 0 [ifsubtype] => 1 [subtype] => ALTERNATIVE [ifdescription] => 0 [ifid] => 0 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => boundary [value] => ----=_NextPart_002_0286_01CD4148.772DE680 ) ) [parts] => Array ( [0] => stdClass Object ( [type] => 0 [encoding] => 4 [ifsubtype] => 1 [subtype] => PLAIN [ifdescription] => 0 [ifid] => 0 [lines] => 13 [bytes] => 157 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => charset [value] => koi8-r ) ) ) [1] => stdClass Object ( [type] => 0 [encoding] => 4 [ifsubtype] => 1 [subtype] => HTML [ifdescription] => 0 [ifid] => 0 [lines] => 86 [bytes] => 3392 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => charset [value] => koi8-r ) ) ) ) ) [1] => stdClass Object ( [type] => 5 [encoding] => 3 [ifsubtype] => 1 [subtype] => PNG [ifdescription] => 0 [ifid] => 1 [id] => [bytes] => 262410 [ifdisposition] => 0 [ifdparameters] => 0 [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => name [value] => image001.png ) ) ) ) ) [1] => stdClass Object ( [type] => 5 [encoding] => 3 [ifsubtype] => 1 [subtype] => PNG [ifdescription] => 0 [ifid] => 0 [bytes] => 67840 [ifdisposition] => 1 [disposition] => attachment [ifdparameters] => 1 [dparameters] => Array ( [0] => stdClass Object ( [attribute] => filename [value] => 187.png ) ) [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => name [value] => 187.png ) ) ) [2] => stdClass Object ( [type] => 3 [encoding] => 3 [ifsubtype] => 1 [subtype] => VND.MS-EXCEL [ifdescription] => 0 [ifid] => 0 [bytes] => 25926 [ifdisposition] => 1 [disposition] => attachment [ifdparameters] => 1 [dparameters] => Array ( [0] => stdClass Object ( [attribute] => filename [value] => default.xls ) ) [ifparameters] => 1 [parameters] => Array ( [0] => stdClass Object ( [attribute] => name [value] => default.xls ) ) ) ) ) вот код который собирает данные из этого массива и закидывает в свой Код (Text): $connection = imap_open("{{$host}:".$port."/imap/".$ssl."}INBOX", $user, $pass); $messagearr = imap_search($connection, 'UNSEEN'); if($messagearr !== false) { foreach($messagearr as $value) { $array[$i] = imap_headerinfo($connection, $value); $arrbd[$i] = imap_fetchstructure($connection, $value); $partsbd = get_object_vars($arrbd[$i]); if(!empty($partsbd['parts'])) { $filearr = array(); $f = 0; $fpos = 2; for($p=0;$p<count($partsbd['parts']);++$p) { if(isset($partsbd['parts'][$p]->disposition) && $partsbd['parts'][$p]->disposition == 'attachment') { echo " - нашел аттач на партсе ".$p.'<br>'; $filearr[$f]['realname'] = decodeHeader($partsbd['parts'][$p]->dparameters[0]->value); $filearr[$f]['hashname'] = md5($filearr[$f]['realname'].time()."266267337".rand()); $filearr[$f]['filepath'] = $fpas.$filearr[$f]['hashname']; $part1 = imap_fetchbody($connection,$value,$fpos); $filearr[$f]['filedata'] = getdecodevalue($part1,$partsbd['parts'][$p]->type); $f++; $fpos++; } else if(isset($partsbd['parts'][$p]->type) && $partsbd['parts'][$p]->type == '5') { $filearr[$f]['realname'] = decodeHeader($partsbd['parts'][$p]->parameters[0]->value); $filearr[$f]['hashname'] = md5($filearr[$f]['realname'].time()."266267337".rand()); $filearr[$f]['filepath'] = $fpas.$filearr[$f]['hashname']; $part1 = imap_fetchbody($connection,$value,$fpos); $filearr[$f]['filedata'] = getdecodevalue($part1,$partsbd['parts'][$p]->type); $f++; $fpos++; } } } if(!empty($partsbd['parts'][0]->parts)) { for($p=0;$p<count($partsbd['parts'][0]->parts);++$p) { if(isset($partsbd['parts'][0]->parts[$p]->disposition) && $partsbd['parts'][0]->parts[$p]->disposition == 'attachment') { $filearr[$f]['realname'] = decodeHeader($partsbd['parts'][0]->parts[$p]->dparameters[0]->value); $filearr[$f]['hashname'] = md5($filearr[$f]['realname'].time()."266267337".rand()); $filearr[$f]['filepath'] = $fpas.$filearr[$f]['hashname']; $part1 = imap_fetchbody($connection,$value,$fpos); $filearr[$f]['filedata'] = getdecodevalue($part1,$partsbd['parts'][0]->parts[$p]->type); $f++; $fpos++; } else if(isset($partsbd['parts'][0]->parts[$p]->type) && $partsbd['parts'][0]->parts[$p]->type == '5') { $filearr[$f]['realname'] = decodeHeader($partsbd['parts'][0]->parts[$p]->parameters[0]->value); $filearr[$f]['hashname'] = md5($filearr[$f]['realname'].time()."266267337".rand()); $filearr[$f]['filepath'] = $fpas.$filearr[$f]['hashname']; $part1 = imap_fetchbody($connection,$value,$fpos); $filearr[$f]['filedata'] = getdecodevalue($part1,$partsbd['parts'][0]->parts[$p]->type); $f++; $fpos++; } } } } } собственно первый цикл собирает 2 файла (в данном случае) с первых 'Parts' второй скрипт делает тоже самое только уже с еще одним вложенным в parts массивом parts меня смущает строка $part1 = imap_fetchbody($connection,$value,$fpos); а именно $fpos, изначально он равен 2 затем прибавляется как только забирет файл, я пробывал во втором цикле меня вручную эту переменную но ничего не помогало, только если поставлю 2 или 3 то в файл попадел содержимое первого или второго файла