Imap mail с php - PullRequest
       23

Imap mail с php

0 голосов
/ 30 ноября 2011

Я пишу почтовый клиент с IMAP / PHP. Но как я могу искать письма, у которых есть вложение. Нет опции с imap_search ()

Ответы [ 2 ]

3 голосов
/ 02 мая 2015

В Imap / php есть одна опция imap_fetchstructure, которая дает тип части почты

            $structure = imap_fetchstructure($inbox, $messageNumber);
            $flattenedParts = $this->flattenParts($structure->parts);

            foreach($flattenedParts as $partNumber => $part)
            {
                switch($part->type)
                {

                case 0:
                    // the HTML or plain text part of the email
                    // now do something with the message, e.g. render it
                break;

                case 1:
                    // multi-part headers, can ignore

                break;
                case 2:
                    // attached message headers, can ignore
                break;

                case 3: // application
                case 4: // audio
                    break;
                case 5: // image

                    //break;
                case 6: // video
                case 7: // other

                       echo "Mail contain attachment ";
                        // don't know what it is
                    }
                    break;

                }
            }

           function flattenParts ($messageParts,$flattenedParts=array(),$prefix='', $index = 1, $fullPrefix=true) 
             {

    foreach($messageParts as $part) {
        $flattenedParts[$prefix.$index] = $part;
        if(isset($part->parts)) {
            if($part->type == 2) {
                $flattenedParts = $this->flattenParts($part->parts, $flattenedParts, $prefix.$index.'.', 0, false);
            }
            elseif($fullPrefix) {
                $flattenedParts = $this->flattenParts($part->parts, $flattenedParts, $prefix.$index.'.');
            }
            else {
                $flattenedParts = $this->flattenParts($part->parts, $flattenedParts, $prefix);
            }
            unset($flattenedParts[$prefix.$index]->parts);
        }
        $index++;
    }

    return $flattenedParts;
}
0 голосов
/ 30 ноября 2011

Как видите, Спецификация команды IMAP SEARCH не имеет опции для поиска сообщений, содержащих вложения, это не PHP-причуда.Таким образом, вам нужно получить список доступных сообщений в определенном почтовом ящике, просмотреть их и проверить, есть ли в отдельных сообщениях вложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...