Aktualnie piszę skrypt, który pobiera wiadomości ze skrzynki poprzez IMAP i zapisuje ich załączniki na serwerze. Choć jest to zapożyczony kod z jakiegoś tutoriala, generalnie wszystko działa bez problemu, lecz pojawił się problem w przypadku gdy duża wiadomość wysłana przy pomocy Outlooka zostaje podzielona na części. Wtedy mój skrypt jej w ogóle nie widzi, jak poradzić sobie z takim problemem?

Poniżej kod odpowiedzialny za pobranie załączników i ich zapisanie.

<?

        function getdecodevalue($message,$coding)
        {
        if ($coding == 0) 
        { 
           $message = imap_8bit($message); 
        } 
        elseif ($coding == 1) 
        { 
          $message = imap_8bit($message); 
        } 
        elseif ($coding == 2) 
        { 
           $message = imap_binary($message); 
        } 
        elseif ($coding == 3) 
        { 
        $message=imap_base64($message); 
        } 
        elseif ($coding == 4) 
        { 
           $message = imap_qprint($message); 
        } 
        elseif ($coding == 5) 
        { 
         $message = imap_base64($message); 
        } 
        return $message;
        }


            $mbox = imap_open ("{127.0.0.1:143/novalidate-cert}INBOX",  'login', 'haslo') or die("can't connect: " . imap_last_error());
            $message = array();
            $message["attachment"]["type"][0] = "text";
            $message["attachment"]["type"][1] = "multipart";
            $message["attachment"]["type"][2] = "message";
            $message["attachment"]["type"][3] = "application";
            $message["attachment"]["type"][4] = "audio";
            $message["attachment"]["type"][5] = "image";
            $message["attachment"]["type"][6] = "video";
            $message["attachment"]["type"][7] = "other";
            
            for ($jk = 1; $jk <= imap_num_msg($mbox); $jk++)
            {
            $structure = imap_fetchstructure($mbox, $jk);    
            $parts = $structure->parts;
            $fpos=2;
                    for($i = 1; $i < count($parts); $i++)
                       {
                        $message["pid"][$i] = ($i);
                        $part = $parts[$i];

                        if($part->disposition == "attachment") 
                            {
                            
                            $message["type"][$i] = $message["attachment"]["type"][$part->type] . "/" . strtolower($part->subtype);
                            $message["subtype"][$i] = strtolower($part->subtype);
                            $ext=$part->subtype;

			$params = $part->dparameters;
			$filename=$part->dparameters[0]->value;
															
			$mege="";
			$data="";
			$mege = imap_fetchbody($mbox,$jk,$fpos);  
			$filename="$filename";
			$fp=fopen($filename,'w');
			$data=getdecodevalue($mege,$part->type);    
				fputs($fp,$data);
				fclose($fp);
				$fpos+=1;
										

			echo $filename.' - mime ('.$part->subtype.')<br>'; 
										

                            }
            
						}

            }
            imap_close($mbox); 
			

?>