При получении письма с сервера не получается получить тело письма в нужной кодировке. Вроде как отправлял в кодировке Win-1251, но при обработке входящей корреспонденции выдается билиберда. Функция iconv_mime_decode($body[Key($body)],0, "WINDOWS-1251") не дает нужный результат. Строки 0, 2, 4, 5 непонятны. Как правильно раскодировать тело письма? Код (Text): Подключились к узлу 192.168.213.1! - pop сервер Общий объем - 4563 байт. Сообщение: 1 | От: "test2" | Кому: | Тема: тест | 1126 байт. Строка: 0 =C7=E4=F0=E0=E2=F1=F2=E2=F3=E9=F2=E5, Test. Строка: 1 Строка: 2 =F2=E5=F1=F2 Строка: 3 Строка: 4 --=20 Строка: 5 =D1 =F3=E2=E0=E6=E5=ED=E8=E5=EC, Строка: 6 test2 mailto:test2@test.loc Строка: 7 Строка: 8
Расшифровал: Код (PHP): <?php function getIntVal($char) { if(is_numeric($char)) return((int) $char); else return(10 + (ord($char) - ord('A'))); } header('Content-type: text/html; charset=Windows-1251'); $str = '=C7=E4=F0=E0=E2=F1=F2=E2=F3=E9=F2=E5'; $chars = explode('=', $str); array_shift($chars); $str = ''; foreach($chars as $char) { $first = getIntVal(substr($char, 0, 1)); $second = getIntVal(substr($char, 1, 1)); $charCode = $first * 16 + $second; $str .= chr($charCode); } echo($str); ?> ))