0

PHP に組み込まれている imap 拡張機能を使用して、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の場合、メッセージを正しくデコードするにはどうすればよいですか?

4

0 に答える 0