LINUX.ORG.RU

Ещё вопрос про email parsing


0

1

Подскажите, есть ли нечто очень высокоуровневое, чтобы выполнить такую задачу: взять e-mail сообщение, например, из файла или stdin целиком, и на выходе получить текст письма, в единой кодировке UTF-8, например.

Под текстом имеется ввиду именно тот текст, который мы бы видели, просмотрев это письмо в почтовом клиенте. В готовом виде, то есть, при необходимости, извлеченный из multipart mime, перекодированный из base64/QP/UUE, выдернутый из html-а, сконвертированный из KOI8-R и т.д.

Всякие аттачи, картинки и прочее, не отображаемое в текстовом виде - игнорировать.

Я раньше делал нечто подобное, но под виндой. Там я использовал Delphi и набор компонентов Indy. Сейчас я попробовал то же самое сделать под Free Pascal/Lazarus - Indy туда портировали, но под Linux оно не работает. Что-то там накосячили при работе с кодировками, кое-что мне удалось исправить, но теперь я добрался до функции перекодирования Multibyte character set, там оно через IFDEF под виндами вызывает MultiByteToWideChar и работает нормально, а под юниксом вызывает iconv и не работает. Быстро найти почему не работает не представляется возможным - опыта маловато, да и не факт, что это последняя грабля окажется. Поэтому надеюсь найти какое-нибудь другое решение.



Последнее исправление: shamus24 (всего исправлений: 1)

Знаю, что на Perl есть библиотека MIME::Lite. Для Си не знаю. Поищи сам. А для какой задачи-то нужно? Для web или для какой-то программки? А то такая библиотека и в Emacs есть. Называется Emacs MIME. :)

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Знаю, что на Perl есть библиотека MIME::Lite.

Ах, его не рекомендует его сопровождающий:

WAIT!

MIME::Lite is not recommended by its current maintainer. There are a number of alternatives, like Email::MIME or MIME::Entity and Email::Sender, which you should probably use instead. MIME::Lite continues to accrue weird bug reports, and it is not receiving a large amount of refactoring due to the availability of better alternatives. Please consider using something else.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Спасибо что предупредили. Я уже читать начал.

Задача (локальная) положить в mysql текст входящих писем. Ну, не только текст - заголовки (целиком), адрес from (связать со справочником, если возможно), время получения... Но это всё техника. Основное - выделить именно текст письма.

Потом этот текст нужно будет как минимум показать через web, разделить на части, и ещё раз засунуть в БД по частям :-) . Но это всё потом.

shamus24
() автор топика

Для Java есть парсер в Apache Tika, основанный на mime4j

maxcom ★★★★★
()
Ответ на: комментарий от Zubok

Всем спасибо, сделал. На питоне. Неплохая штучка для обработки всяческих странных текстов.

Хотя и повозиться пришлось, особенно в части взаимодействия с mysql.

shamus24
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.