Ответы пользователя по тегу PHP
  • Что делать с кодировкой тела сообщения imap_body?

    @iAlexCross Автор вопроса
    Получилось решить через imap. Не знаю, подойдет ли это для каждого, но для моей задачи ОК.

    $imap = imap_open("{imap.yandex.ru:993/imap/ssl}", "login", "password");
    
        $mails = imap_search($imap, 'ON "12-Dec-2020"', OP_READONLY); // ON "12-Dec-2020 - условие
    
        foreach($mails as $mail) {
            $structure = imap_fetchstructure($imap, $mail);
            if (isset($structure->parts[1])) {
                $part = $structure->parts[1];
                $message = imap_fetchbody($imap,$mail,1);
                if(strpos($message,"<html") !== false) {
                    $message = trim(utf8_encode(quoted_printable_decode($message)));
                }
                else if ($part->encoding == 3) {
                    $message = imap_base64($message);
                }
                else if($part->encoding == 2) {
                    $message = imap_binary($message);
                }
                else if($part->encoding == 1) {
                    $message = imap_8bit($message);
                }
                else {
                    $message = trim(utf8_encode(quoted_printable_decode(imap_qprint($message))));
                }
            }
            echo '<pre>';
            print_r($message);
            echo '</pre>';
        }
    Ответ написан
    Комментировать