Всем доброго времени суток!Проблема вкратце:
Есть файл с письмом(сырой, так как он ходит через smtp). Надо как то его обработать, чтобы получить текст письма отдельно в человекочитаемом формате, от кого, кому и т.п.
Проблема полностью:Идея - автоматический заказ пропусков. Т.е. человек пишет письмо с текстом
ф: Иванов
и: Петр
о: Иванович
д: 21.03.2014Система его получает, обрабатывает извлекая из письма поля от кого, а также данные после ф:, и:, о:
Техпроцесс:
1. Забрать сообщение c POP3/IMAP сервера
2. Обработать сообщение - получить в BASH-скрипте поля от, кому, и, самое главное, тело письма в человеческом варианте, чтобы потом его обработать awk, sed-ами, grep-ами и т.д.Первый пункт реализован с помощью fetchmail, далее postfix+передача письма скрипту. Скрипт на bash письмо получает, но в сыром формате.
Хочется некое универсальную программу, которая бы независимо от кодировки и формата (простой текст/html) выдавала на выходе простой текст тела письма, без форматирования и всего остального.В гугл пожалуйста сразу не отправляйте, вчера 5 часов убил, так до истины и не добрался. Есть какие-то парсеры на php и python, туманно описаные, но может как-то иначе?
> В гугл пожалуйста сразу не отправляйтеСразу не будем, будем постепенно ))
> вчера 5 часов убил, так до истины и не добрался
значит мало убил, надо 10
Теперь по существу.
В теле могут быть любые строки?
Или только те, что вы привели в качестве примера, а именно
ф: Иванов
и: Петр
о: Иванович
д: 21.03.2014
HTML теги могут присутствовать и быть где угодно?
Кодировка различная?
>[оверквотинг удален]
> значит мало убил, надо 10
> Теперь по существу.
> В теле могут быть любые строки?
> Или только те, что вы привели в качестве примера, а именно
> ф: Иванов
> и: Петр
> о: Иванович
> д: 21.03.2014
> HTML теги могут присутствовать и быть где угодно?
> Кодировка различная?Касаемо полей будет только ф: и: о: д: и п:(номер проходной) восприниматься.
Да, в теле могут быть любые доп. строки, так же как и html-теги, так же как и кодировка - почтовые клиенты то разные. И у кого-то подпись добавлена, кто-то после ф: забыл пробел поставить и т.п.
Не проще ли сделать простенькую веб форму с 4 полями на том же php и не изобретать костыли и велосипеды?
> Не проще ли сделать простенькую веб форму с 4 полями на том
> же php и не изобретать костыли и велосипеды?Ну чтож ты на взлёте то ... спортил пiсню :(
> Не проще ли сделать простенькую веб форму с 4 полями на том
> же php и не изобретать костыли и велосипеды?Ну дак это же логично, просто, понятно, проверено, работает.
Это же нифига не путь война^Wизобретателя велосипедов.
> Не проще ли сделать простенькую веб форму с 4 полями на том
> же php и не изобретать костыли и велосипеды?;Для меня завести для 50 фирм логин и пароль каждой не проще. Тем более пароль от какой то формы можно легко передать подружке...
Нужна именно.авторизация по емайл адресу.
> Для меня завести для 50 фирм логин и пароль каждой не проще.
> Тем более пароль от какой то формы можно легко передать подружке...
> Нужна именно.авторизация по емайл адресу.че ж вы такое курите на своей фирме???
> Нужна именно.авторизация по емайл адресу.Ой мамо ... какой эпичекий ... хммм ... долбоклюй!
Эффект от внедрения будет - ворота открытые всем :)
Почему - думай сам.
>> Не проще ли сделать простенькую веб форму с 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
> ну если так важно именно email, кто вам мешает создать на этом
> сайте аутентификацию через почту?
> http://storage.sys-adm.org.ua/form/ формочка набрасывается за 10-15 минут, ну и на php что то типа[... код скипнут ...]
Действительно удобно! У лохов все пароли соберёшь :)
>> ну если так важно именно email, кто вам мешает создать на этом
>> сайте аутентификацию через почту?
>> http://storage.sys-adm.org.ua/form/ формочка набрасывается за 10-15 минут, ну и на php что то типа
> [... код скипнут ...]
> Действительно удобно! У лохов все пароли соберёшь :)Если лохи тебе не доверяют, тогда аб чем вообще речь :D
>>> ну если так важно именно email, кто вам мешает создать на этом
>>> сайте аутентификацию через почту?
>>> http://storage.sys-adm.org.ua/form/ формочка набрасывается за 10-15 минут, ну и на php что то типа
>> [... код скипнут ...]
>> Действительно удобно! У лохов все пароли соберёшь :)
> Если лохи тебе не доверяют, тогда аб чем вообще речь :DКстати никто ж не запрещает сделать аутентификацию по сертификатам, чтобы не было потом претензий и не поняток
> Всем доброго времени суток!
> Проблема вкратце:
> Есть файл с письмом(сырой, так как он ходит через smtp). Надо как
> то его обработать, чтобы получить текст письма отдельно в человекочитаемом формате,
> от кого, кому и т.п.Мне пришлось парсить несколько разноформатных выдач и при помощи пехепе дом елементс, а далее ручками, я навалял фреймворк, до которого ввв:меканайзу -- как до Китая пешком.
Полагаю, что на фрешпортс есть пара перловых или на пхп классес несколько заготовок, из которых за день спилится искомое. Выбери инструмент и читай его мануал.
Привет,Делал подобное тыщу лет тому назад. Реализация была через .qmail- файл на почтовом сервере, который позволяет прогнать все тело письма через внешний фильтр (скрипт); ну, а он уже сделает то, что вам нужно. Возможно, что-то подобное есть и в других почтовиках, не знаю - мне qmail вполне хватает на все случаи жизни.
WWell,
> Привет,
> Делал подобное тыщу лет тому назад. Реализация была через .qmail- файл на
> почтовом сервере, который позволяет прогнать все тело письма через внешний фильтр
> (скрипт); ну, а он уже сделает то, что вам нужно. Возможно,
> что-то подобное есть и в других почтовиках, не знаю - мне
> qmail вполне хватает на все случаи жизни.
> WWell,очень интересно, только dot-qmail это про вынос тела, а топик стартер ведет разговор о парсинге тела.
>> Привет,
>> Делал подобное тыщу лет тому назад. Реализация была через .qmail- файл на
>> почтовом сервере, который позволяет прогнать все тело письма через внешний фильтр
>> (скрипт); ну, а он уже сделает то, что вам нужно. Возможно,
>> что-то подобное есть и в других почтовиках, не знаю - мне
>> qmail вполне хватает на все случаи жизни.
>> WWell,
> очень интересно, только dot-qmail это про вынос тела, а топик стартер ведет
> разговор о парсинге тела.Посмотрите как работает | оператор в .qmail файлах. Он не мешает последующему local delivery.
WWell,
>> очень интересно, только dot-qmail это про вынос тела, а топик стартер ведет
>> разговор о парсинге тела.
> Посмотрите как работает | оператор в .qmail файлах. Он не мешает последующему
> local delivery.NAME
dot-qmail - control the delivery of mail messagesDESCRIPTION
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.где тут хоть слово про парсинг непосредственно сообщения?
> Идея - автоматический заказ пропусков. Т.е. человек пишет письмо с текстом
> ф: Иванов
> и: Петр
> о: Иванович
> д: 21.03.2014Все твое рабочее время будет посвящено допиливанию скрипта/программы для совместимости с тем или иным почтовым клиентом опеределенной версии а также с разгребанием необработанных писем всвязи с дебильными, автоматически добавляемыми подписями, приветствиями и т.п.
А еще в HTML письма будут стили, скрипты, и прочая хрень.И все это не считая того простого факта, что в поле From: в письме можно поставить хоть vv_putin, причем вариантов кодирования этого всего тоже масса.
>[оверквотинг удален]
>> о: Иванович
>> д: 21.03.2014
> Все твое рабочее время будет посвящено допиливанию скрипта/программы для совместимости
> с тем или иным почтовым клиентом опеределенной версии а также с
> разгребанием необработанных писем всвязи с дебильными, автоматически добавляемыми подписями,
> приветствиями и т.п.
> А еще в HTML письма будут стили, скрипты, и прочая хрень.
> И все это не считая того простого факта, что в поле From:
> в письме можно поставить хоть vv_putin, причем вариантов кодирования этого всего
> тоже масса.А я согласен с вами.
Теоретически, в принципе, можно было бы попробовать написать.
Я на perl'е, в частности, было начал, но плюнул. ))
И даже не самое страшное, что кодировка будет различная, или подписи разные.
И то, что оформлено будет как html код - это решаемо.Принципиально то, что вы не контролируете как будет указаны фио.
Вчера Иванов отправил заявку так:
ф: Иванов
сегодня Петров так:
ф:Петров
а завтра Сидоров так
фамилия: Сидоров или ф.-Сидоров
а Пупкин вообще пришлёт только
Пупкин Василий ИвановичВариантов масса. И что тогда делать? Как это всё учесть?
Вот если бы была форма (на сайте, к примеру) с четырьмя полями для фио и даты и все, тогда бы другое дело. Грабли с кодировкой отпадут, с содержимым также.
Красота. Ешь - не хочу..))
Но тогда, как выше справедливо замечают, почему бы и не использовать разбор полученных данных через форму сразу, без писем?