Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как раскодировать заголовки почтовых сообщений?


Автор: Churchill 3.3.2004, 18:37
С помощью модуля Mail::POP3Client хочу посмотреть заголовки почтовых сообщений, лежащих на сервере. При этом выдаются данные такого содержания:


From: =?koi8-r?B?5dfHxc7JyiDiz9HSy8nO?= <[email protected]>;
Subject: =?koi8-r?B?8NLP18XSy8E=?=

Вопрос: каким образом раскодировать полученную информацию?

Автор: GoodBoy 3.3.2004, 19:19
Удаляйте все до последнего вопроса в начале (=?koi8-r?B?) и все начиная с первого вопроса в конце (?=) и полученныю строку раскодируйте из формата base64.

Автор: rcdimon 17.7.2005, 01:23
А как ее раскодировать то???

Автор: sharq 18.7.2005, 17:04
Churchill и rcdimon, заголовки, а иногда и все сообщение кодируется либо с помощью Base64, либо Quoted-printable. (читаем rfc 2045 - MIME)

Вот структура: =?<кодировка>?<тип_кодирования>?<закодированная_строка>?
Кодировка может быть: cp1251, koi8-r и др.
Тип_кодирования: Q - Quoted-printable, B - Base64
Закодированная строка - строка, содержащия символы того или иного кодирования.

Как ни странно perl умеет работать с MIME - модуль MIME.
Для кодирования/раскодирования - MIME::Base64, MIME::QoutedPrint

Поэтому, используя рег. выражения и модули, можно легко расшифровать что там написано. smile

Код
$message = decode_base64($str);

или
Код
$message = decode_qp($str);


smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)