Есть известная проблема в распознавании webmail-системы uebimiau, далее telaen кодировки заголовков, типа ..?koi8-r?..
Система не видит этого обозначения и выдает в заголовках кракозяблы. Причем это касается не только заловка письма, но и заголовков вложений, вследствие чего эти вложения невозможно просмотреть из web-интерфейса.
Такая ошибка касается всех сообщений, отправленных некоторыми почтовыми клиентами, в том числе и Outlook.Методом художественного свиста установлено, что если в файле-майлбоксе '/var/mail/пользователь' произвести замену всех 'koi8-r' на 'KOI8-R', то проблема решается сама собой. То есть uebimiau (telaen) чувствует при интерпретации регистр обозначения кодировки заголовка.
Так как я не очень силен в РНР, то не смог обнаружить решение данной проблемы в коде самого вебмайла, а запустил с помощью cron и awk скрипт замены в файлах '/var/mail/*' символов 'koi8-r' на 'KOI8-R' с периодичностью в полчаса. Ясно, что это не совсем правильное решение проблемы, и догадываюсь, что есть решение более красивое.
Что скажут по этому поводу гуру, которые эту проблему решали? Если есть возможность подправить код, либо настройки uebimiau (telaen)? Может есть возможность произвести махинации c procmail, чтобы он складывал в майлбоксы уже исправленные файлы?
Буду очень благодарен, если подскажете как с этим справиться.
Ндя.. А в ответ тишина..
>Ндя.. А в ответ тишина..видать мало кто их использует...
Не нужно быть большим спецом в PHP, чтобы найти какие функции php используются для
imap или pop3 и далее найти разбор mime, начать можно с headers - найти и конвертнуть
в строке Subject koi8 не должно быть сложно, imho
Сталкнулся с этой же проблемой --решил такВ class.telaen.php изменил строку до такой
if(ereg("KOI8", $subject) && ereg("koi8", $subject)) $result = convert_cyr_string($result, "k", "w");
вот осталась проблема с utf8 ((
if(ereg("KOI8", $ctype) or ereg("koi8", $ctype))
А это тело нормально переконвертируетХотя логика в предыдущем посте так и не понятна))
Условие должно быть ИЛИ а не И ПО ЛОГИКЕ))
> if(ereg("KOI8", $ctype) or ereg("koi8", $ctype))
>А это тело нормально переконвертируетСпасибо заучастие, но уже разобрался сам.. Немного по другому - просто исправил эту же строку таким образом:
if(ereg("KOI8", $subject) && ereg("koi8", $subject)) $result = convert_cyr_string($result, "k", "w");
Проблема решилась.
>> if(ereg("KOI8", $ctype) or ereg("koi8", $ctype))
>>А это тело нормально переконвертирует
>
>Спасибо заучастие, но уже разобрался сам.. Немного по другому - просто исправил
>эту же строку таким образом:
>
>if(ereg("KOI8", $subject) && ereg("koi8", $subject)) $result = convert_cyr_string($result, "k", "w");
>
>Проблема решилась.Сори, не то скопировал - вот правильная строка:
if(ereg("KOI8", "koi8", $subject)) $result = convert_cyr_string($result, "k", "w");
>Сталкнулся с этой же проблемой --решил так
>
>В class.telaen.php изменил строку до такой
>
>if(ereg("KOI8", $subject) && ereg("koi8", $subject)) $result = convert_cyr_string($result, "k", "w");
>
>вот осталась проблема с utf8 ((Проблема с UTF8 пропала после локализации всей операционной системы
Ну вы и шаманы, ребята!!! Там всего-навсего ошибка в class.uebimiau.php, они повторно перекодируют сабжект. В строке примерно 4926 надо закомментировать оператор:// if($charset != $this->charset) $mystring = $this->convert_charset($mystring, $charset, $this->charset);
Хотя путь с кроном, конечно же изящнее! :)
>>Сталкнулся с этой же проблемой --решил так
>>
>>В class.telaen.php изменил строку до такой
>>
>>if(ereg("KOI8", $subject) && ereg("koi8", $subject)) $result = convert_cyr_string($result, "k", "w");
>>
>>вот осталась проблема с utf8 ((
>
>Проблема с UTF8 пропала после локализации всей операционной системы
К сожалению в telaen ваш вариант не прокатил. Если эту строку закомментировать, интерфейс вообще перестает перекодировать кириллицу. Работает ранее найденное решение.