Как декодировать кодированное сообщение 7BIT с помощью PHP?

Я использую расширение imap, встроенное в PHP, для чтения сообщений из электронной почты imap, анализа сообщения и добавления его в базу данных другой системы.

Проблема в том, что сообщение приходит закодировано. поэтому мне придется сначала декодировать его, а затем добавить его в базу данных.

Я могу использовать imap_fetchstructure(), чтобы выяснить, к какому типу кодирования относится сообщение, и из них я смогу его декодировать.

так вот что я сделал

$struct = imap_fetchstructure($this->conn, $id, 0);

                    if(isset($struct->encoding)){
                        $message = $this->_decodeMessage($message, $struct->encoding);
                    }

    private function _decodeMessage($msg, $type){

        if($type == 0){
            return mb_convert_encoding($msg, "UTF-8", "auto");
        } elseif($type == 1){
            return imap_8bit($msg); //imap_utf8
        } elseif($type == 2){
            return imap_base64(imap_binary($msg));
        } elseif($type == 3){
            return imap_base64($msg);
        } elseif($type == 4){
            return imap_qprint($msg);
            //return quoted_printable_decode($msg);
        } else {
            return $msg;
        }
    }

Проблема в том, что некоторые сообщения, закодированные с помощью 7BIT, не декодируются правильно, и я по-прежнему вижу сообщения, зашифрованные при печати $message

Как правильно декодировать сообщения, когда их тип 7BIT?

0 ответов

Другие вопросы по тегам