Fri, Jun 08, 2012 at 19:11:11, admin wrote about "[Exim-users] Не полная тема
сообщения в логе":
> T="=?utf-8?b?0JLQsNGIINC60L7QvNC80LXQvdGC0LDRgNC40Lkg0YPQtNCw0LvQtdC9INC90LAg?=\n
> \320\223\320\260\320\271\320\264\320\277\320\260\321\200\320\272\320\265"
>
> Я никаких директив или настроек по лимиту не устанавливал и, признаться, даже
> не знаю куда копать.
> Первую часть, где base64 декодировать легко, а вот как со второй...
> Есть может быть идеи, уважаемые коллеги?
Ну если не средствами exim, а чем-то внешним, и кодировка известна, то
это делается тривиально:
$ printf
'\320\223\320\260\320\271\320\264\320\277\320\260\321\200\320\272\320\265\n' |
iconv -f utf-8
Гайдпарке
То есть тут вообще прямая восьмибитная передача в заголовке.
Вот почему такое отправляется - вопрос более существенный, и что
делать, если кодировка неизвестна (алгоритмы гадания, конечно,
известны, но не на 100% надёжны).
Сам Питон, как уже говорил, тут ни при чём. Если честно подать
строку на вход стандартному email.header.Header, и не забыть уточнить
кодировку, то на выходе получаем нормальный MIME:
(в koi-8 консоли, python2)
>>> import email.header
>>> h = email.header.Header()
>>> h.append('Прювет Волку', 'koi8-r')
>>> h.encode()
'=?koi8-r?b?8NLA18XUIPfPzMvV?='
(в utf-8 консоли, python3)
>>> h = email.header.Header(charset = 'utf-8')
>>> h.append('На мели мы лениво налима ловили, и меняли налима вы мне на линя.
>>> О любви не меня ли вы мило молили и в тумане лимана манили меня?')
>>> h.encode()
'=?utf-8?b?0J3QsCDQvNC10LvQuCDQvNGLINC70LXQvdC40LLQviDQvdCw0LvQuNC80LAg0Ls=?=\n
=?utf-8?b?0L7QstC40LvQuCwg0Lgg0LzQtdC90Y/Qu9C4INC90LDQu9C40LzQsCDQstGLINC8?=\n
=?utf-8?b?0L3QtSDQvdCwINC70LjQvdGPLiDQniDQu9GO0LHQstC4INC90LUg0LzQtdC90Y8g?=\n
=?utf-8?b?0LvQuCDQstGLINC80LjQu9C+INC80L7Qu9C40LvQuCDQuCDQsiDRgtGD0LzQsNC9?=\n
=?utf-8?b?0LUg0LvQuNC80LDQvdCwINC80LDQvdC40LvQuCDQvNC10L3Rjz8=?='
Я не думаю, что это именно exim декодирует; скорее оно было
незакодировано в заголовке при его формировании. Почему он так
формируется - это уже надо тот софт смотреть. Если там переписка с
PHP, то это само по себе хорошо, но после PHP всё равно остаётся
настолько много грязи, что её вычистка требует серьёзной переработки.
В качестве быстрого хака можно предложить через тот же email.header
декодировать все части, которые сделаны по MIME, а по ним уточнить
кодировку остальных - и привести к нужной.
-netch-
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users