Od jakiegoś czasu męczę się z pobieraniem załączników z emaila. Oczywiście nie chodzi o sam zapis pliku lecz o pobranie samych danych z tego co zwraca imap. Oto mój kod:
public function getAttachmentsForMessage($uid, $mailbox){ $structure = imap_fetchstructure($this->getOrSetConnection($mailbox), $uid, FT_UID); 'is_attachment' => false, 'filename' => '', 'name' => '', 'attachment' => '' ); if($structure->parts[$i]->ifdparameters) { foreach($structure->parts[$i]->dparameters as $object) { $attachments[$i]['is_attachment'] = true; $attachments[$i]['filename'] = $object->value; } } } if($structure->parts[$i]->ifparameters) { foreach($structure->parts[$i]->parameters as $object) { $attachments[$i]['is_attachment'] = true; $attachments[$i]['name'] = $object->value; } } } if($attachments[$i]['is_attachment']) { $attachments[$i]['attachment'] = imap_fetchbody($this->getOrSetConnection($mailbox), $uid, $i+1, FT_UID); if($structure->parts[$i]->encoding == 3) { // 3 = BASE64 } elseif($structure->parts[$i]->encoding == 4) { // 4 = QUOTED-PRINTABLE } } } } }
Sam skrypt jest delikatnie przerobionym kodem z internetów i pobiera on część załączników. Problem pojawia się przy np. plikach .htm które dostaję z np. banku. W tablicy którą zwraca imap pliki te są w kompletnie innym miejscu niż np. pliki jpg czy pdf. Czy zostaje jedynie opcja przelecenia po miejscach w których zauważę występowanie jakiś załączników czy jest na to jakiś inny, mądrzejszy sposób? Jak Wy to robicie?