URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 95523
[ Назад ]

Исходное сообщение
"Парсинг входящих писем"

Отправлено Олег , 02-Апр-14 09:33 
Всем доброго времени суток!

Проблема вкратце:

Есть файл с письмом(сырой, так как он ходит через smtp). Надо как то его обработать, чтобы получить текст письма отдельно в человекочитаемом формате, от кого, кому и т.п.


Проблема полностью:

Идея - автоматический заказ пропусков. Т.е. человек пишет письмо с текстом

ф: Иванов
и: Петр
о: Иванович
д: 21.03.2014

Система его получает, обрабатывает извлекая из письма поля от кого, а также данные после ф:, и:, о:

Техпроцесс:

1. Забрать сообщение c POP3/IMAP сервера
2. Обработать сообщение - получить в BASH-скрипте поля от, кому, и, самое главное, тело письма в человеческом варианте, чтобы потом его обработать awk, sed-ами, grep-ами и т.д.

Первый пункт реализован с помощью fetchmail, далее postfix+передача письма скрипту. Скрипт на bash письмо получает, но в сыром формате.
Хочется некое универсальную программу, которая бы независимо от кодировки и формата (простой текст/html) выдавала на выходе простой текст тела письма, без форматирования и всего остального.

В гугл пожалуйста сразу не отправляйте, вчера 5 часов убил, так до истины и не добрался. Есть какие-то парсеры на php и python, туманно описаные, но может как-то иначе?


Содержание

Сообщения в этом обсуждении
"Парсинг входящих писем"
Отправлено михалыч , 02-Апр-14 17:43 
> В гугл пожалуйста сразу не отправляйте

Сразу не будем, будем постепенно ))

> вчера 5 часов убил, так до истины и не добрался

значит мало убил, надо 10

Теперь по существу.
В теле могут быть любые строки?
Или только те, что вы привели в качестве примера, а именно
ф: Иванов
и: Петр
о: Иванович
д: 21.03.2014
HTML теги могут присутствовать и быть где угодно?
Кодировка различная?


"Парсинг входящих писем"
Отправлено Олег , 02-Апр-14 21:43 
>[оверквотинг удален]
> значит мало убил, надо 10
> Теперь по существу.
> В теле могут быть любые строки?
> Или только те, что вы привели в качестве примера, а именно
> ф: Иванов
> и: Петр
> о: Иванович
> д: 21.03.2014
> HTML теги могут присутствовать и быть где угодно?
> Кодировка различная?

Касаемо полей будет только ф: и: о: д: и п:(номер проходной) восприниматься.
Да, в теле могут быть любые доп. строки, так же как и html-теги, так же как и кодировка - почтовые клиенты то разные. И у кого-то подпись добавлена, кто-то после ф: забыл пробел поставить и т.п.


"Парсинг входящих писем"
Отправлено ALex_hha , 03-Апр-14 00:00 
Не проще ли сделать простенькую веб форму с 4 полями на том же php и не изобретать костыли и велосипеды?

"Парсинг входящих писем"
Отправлено Аноним , 03-Апр-14 05:11 
> Не проще ли сделать простенькую веб форму с 4 полями на том
> же php и не изобретать костыли и велосипеды?

Ну чтож ты на взлёте то ... спортил пiсню :(


"Парсинг входящих писем"
Отправлено Pahanivo , 03-Апр-14 06:30 
> Не проще ли сделать простенькую веб форму с 4 полями на том
> же php и не изобретать костыли и велосипеды?

Ну дак это же логично, просто, понятно, проверено, работает.
Это же нифига не путь война^Wизобретателя велосипедов.


"Парсинг входящих писем"
Отправлено Oleg , 03-Апр-14 07:34 
> Не проще ли сделать простенькую веб форму с 4 полями на том
> же php и не изобретать костыли и велосипеды?;

Для меня завести для 50 фирм логин и пароль каждой не проще. Тем более пароль от какой то формы можно легко передать подружке...


Нужна именно.авторизация по емайл адресу.


"Парсинг входящих писем"
Отправлено Pahanivo , 03-Апр-14 09:32 
> Для меня завести для 50 фирм логин и пароль каждой не проще.
> Тем более пароль от какой то формы можно легко передать подружке...
> Нужна именно.авторизация по емайл адресу.

че ж вы такое курите на своей фирме???


"Парсинг входящих писем"
Отправлено Аноним , 03-Апр-14 21:12 
> Нужна именно.авторизация по емайл адресу.

Ой мамо ... какой эпичекий ... хммм ... долбоклюй!

Эффект от внедрения будет - ворота открытые всем :)
Почему - думай сам.



"Парсинг входящих писем"
Отправлено ALex_hha , 05-Апр-14 01:00 
>> Не проще ли сделать простенькую веб форму с 4 полями на том
>> же php и не изобретать костыли и велосипеды?;
> Для меня завести для 50 фирм логин и пароль каждой не проще.
> Тем более пароль от какой то формы можно легко передать подружке...

Каких 50 фирм? Один сайт на все офисы/филиалы

> Нужна именно.авторизация по емайл адресу.

ну если так важно именно email, кто вам мешает создать на этом сайте аутентификацию через почту?

http://storage.sys-adm.org.ua/form/ формочка набрасывается за 10-15 минут, ну и на php что то типа


<?php
    include "Auth/Container/IMAP.php";

    $imap_host = '{imap.gmail.com:993/imap/ssl}INBOX';
    $imap_user = 'user@gmail.com';
    $imap_password = '1234567';

    $mailbox = imap_open($imap_host, $imap_user, $imap_password);

    if ($mailbox) {
        echo "Autentication successful!";
        print_r (imap_errors());
        imap_close($mailbox);
    }
    else {
        echo "Autentication error! Please try again.";
        print_r (imap_errors());
    }

Для упрощения понимания примера $imap_user/$imap_password сделал переменными, но никто не мешает получать их из формы. Чтоб совсем секурно вешаем форму на https. итого с отладкой и вылизыванием тратим 1-2 часа времени и спим спокойно. Если фирм много и каждая использует свой почтовый сервер, добавляем комбобокс выбора домена, как сделано в том же mail.ru


"Парсинг входящих писем"
Отправлено Аноним , 05-Апр-14 07:42 
> ну если так важно именно email, кто вам мешает создать на этом
> сайте аутентификацию через почту?
> http://storage.sys-adm.org.ua/form/ формочка набрасывается за 10-15 минут, ну и на php  что то типа

[... код скипнут ...]

Действительно удобно! У лохов все пароли соберёшь :)


"Парсинг входящих писем"
Отправлено ALex_hha , 05-Апр-14 11:28 
>> ну если так важно именно email, кто вам мешает создать на этом
>> сайте аутентификацию через почту?
>> http://storage.sys-adm.org.ua/form/ формочка набрасывается за 10-15 минут, ну и на php  что то типа
> [... код скипнут ...]
> Действительно удобно! У лохов все пароли соберёшь :)

Если лохи тебе не доверяют, тогда аб чем вообще речь :D


"Парсинг входящих писем"
Отправлено ALex_hha , 05-Апр-14 15:51 
>>> ну если так важно именно email, кто вам мешает создать на этом
>>> сайте аутентификацию через почту?
>>> http://storage.sys-adm.org.ua/form/ формочка набрасывается за 10-15 минут, ну и на php  что то типа
>> [... код скипнут ...]
>> Действительно удобно! У лохов все пароли соберёшь :)
> Если лохи тебе не доверяют, тогда аб чем вообще речь :D

Кстати никто ж не запрещает сделать аутентификацию по сертификатам, чтобы не было потом претензий и не поняток


"Парсинг входящих писем"
Отправлено Sabakwaka , 03-Апр-14 16:16 
> Всем доброго времени суток!
> Проблема вкратце:
> Есть файл с письмом(сырой, так как он ходит через smtp). Надо как
> то его обработать, чтобы получить текст письма отдельно в человекочитаемом формате,
> от кого, кому и т.п.

Мне пришлось парсить несколько разноформатных выдач и при помощи пехепе дом елементс, а далее ручками, я навалял фреймворк, до которого ввв:меканайзу -- как до Китая пешком.

Полагаю, что на фрешпортс есть пара перловых или на пхп классес несколько заготовок, из которых за день спилится искомое. Выбери инструмент и читай его мануал.


"Парсинг входящих писем"
Отправлено Mr. Mistoffelees , 03-Апр-14 17:29 
Привет,

Делал подобное тыщу лет тому назад. Реализация была через .qmail- файл на почтовом сервере, который позволяет прогнать все тело письма через внешний фильтр (скрипт); ну, а он уже сделает то, что вам нужно. Возможно, что-то подобное есть и в других почтовиках, не знаю - мне qmail вполне хватает на все случаи жизни.

WWell,


"Парсинг входящих писем"
Отправлено Pahanivo , 04-Апр-14 09:04 
> Привет,
> Делал подобное тыщу лет тому назад. Реализация была через .qmail- файл на
> почтовом сервере, который позволяет прогнать все тело письма через внешний фильтр
> (скрипт); ну, а он уже сделает то, что вам нужно. Возможно,
> что-то подобное есть и в других почтовиках, не знаю - мне
> qmail вполне хватает на все случаи жизни.
> WWell,

очень интересно, только dot-qmail это про вынос тела, а топик стартер ведет разговор о парсинге тела.



"Парсинг входящих писем"
Отправлено Mr. Mistoffelees , 04-Апр-14 11:06 
>> Привет,
>> Делал подобное тыщу лет тому назад. Реализация была через .qmail- файл на
>> почтовом сервере, который позволяет прогнать все тело письма через внешний фильтр
>> (скрипт); ну, а он уже сделает то, что вам нужно. Возможно,
>> что-то подобное есть и в других почтовиках, не знаю - мне
>> qmail вполне хватает на все случаи жизни.
>> WWell,
> очень интересно, только dot-qmail это про вынос тела, а топик стартер ведет
> разговор о парсинге тела.

Посмотрите как работает | оператор в .qmail файлах. Он не мешает последующему local delivery.

WWell,


"Парсинг входящих писем"
Отправлено Pahanivo , 04-Апр-14 13:23 
>> очень интересно, только dot-qmail это про вынос тела, а топик стартер ведет
>> разговор о парсинге тела.
> Посмотрите как работает | оператор в .qmail файлах. Он не мешает последующему
> local delivery.

     NAME
          dot-qmail - control the delivery of mail messages

     DESCRIPTION
          Normally the qmail-local program delivers each incoming
          message to your system mailbox, homedir/Mailbox, where
          homedir is your home directory.

          It can instead write the mail to a different file or
          directory, forward it to another address, distribute it to a
          mailing list, or even execute programs, all under your
          control.

где тут хоть слово про парсинг непосредственно сообщения?


"Парсинг входящих писем"
Отправлено ShyLion , 04-Апр-14 15:44 
> Идея - автоматический заказ пропусков. Т.е. человек пишет письмо с текстом
> ф: Иванов
> и: Петр
> о: Иванович
> д: 21.03.2014

Все твое рабочее время будет посвящено допиливанию скрипта/программы для совместимости с тем или иным почтовым клиентом опеределенной версии а также с разгребанием необработанных писем всвязи с дебильными, автоматически добавляемыми подписями, приветствиями и т.п.
А еще в HTML письма будут стили, скрипты, и прочая хрень.

И все это не считая того простого факта, что в поле From: в письме можно поставить хоть vv_putin, причем вариантов кодирования этого всего тоже масса.


"Парсинг входящих писем"
Отправлено михалыч , 04-Апр-14 19:31 
>[оверквотинг удален]
>> о: Иванович
>> д: 21.03.2014
> Все твое рабочее время будет посвящено допиливанию скрипта/программы для совместимости
> с тем или иным почтовым клиентом опеределенной версии а также с
> разгребанием необработанных писем всвязи с дебильными, автоматически добавляемыми подписями,
> приветствиями и т.п.
> А еще в HTML письма будут стили, скрипты, и прочая хрень.
> И все это не считая того простого факта, что в поле From:
> в письме можно поставить хоть vv_putin, причем вариантов кодирования этого всего
> тоже масса.

А я согласен с вами.
Теоретически, в принципе, можно было бы попробовать написать.
Я на perl'е, в частности, было начал, но плюнул. ))
И даже не самое страшное, что кодировка будет различная, или подписи разные.
И то, что оформлено будет как html код - это решаемо.

Принципиально то, что вы не контролируете как будет указаны фио.
Вчера Иванов отправил заявку так:
ф: Иванов
сегодня Петров так:
ф:Петров
а завтра Сидоров так
фамилия: Сидоров или ф.-Сидоров
а Пупкин вообще пришлёт только
Пупкин Василий Иванович

Вариантов масса. И что тогда делать? Как это всё учесть?

Вот если бы была форма (на сайте, к примеру) с четырьмя полями для фио и даты и все, тогда бы другое дело. Грабли с кодировкой отпадут, с содержимым также.
Красота. Ешь - не хочу..))
Но тогда, как выше справедливо замечают, почему бы и не использовать разбор полученных данных через форму сразу, без писем?