The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Парсинг входящих писем"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"Парсинг входящих писем"  +/
Сообщение от Олег email(??) on 02-Апр-14, 09:33 
Всем доброго времени суток!

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

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


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

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

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

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

Техпроцесс:

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

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

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Парсинг входящих писем"  +/
Сообщение от михалыч (ok) on 02-Апр-14, 17:43 
> В гугл пожалуйста сразу не отправляйте

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

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

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Парсинг входящих писем"  +/
Сообщение от ALex_hha (ok) on 03-Апр-14, 00:00 
Не проще ли сделать простенькую веб форму с 4 полями на том же php и не изобретать костыли и велосипеды?
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

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


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

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "Парсинг входящих писем"  +/
Сообщение от Аноним (??) on 03-Апр-14, 21:12 
> Нужна именно.авторизация по емайл адресу.

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

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


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

16. "Парсинг входящих писем"  +1 +/
Сообщение от ALex_hha (ok) on 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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

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

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

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Парсинг входящих писем"  +/
Сообщение от Mr. Mistoffelees on 03-Апр-14, 17:29 
Привет,

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

WWell,

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

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

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


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

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

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

WWell,

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Парсинг входящих писем"  +/
Сообщение от Pahanivo (ok) on 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.

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

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

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

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

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

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

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

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

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру