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

Исходное сообщение
"Как в Perl-скрипте получить тело письма?"

Отправлено Anubis , 20-Май-03 02:17 
Помогите плиз!!
Мне надо в Perl-скрипте получить тело письма!!
Я знаю что вродибе можно в файле alliases прописать скрипт.
Так ли это?И всеравно! Даже если жто и так, то как принять тело
писльма в самом скрипте?

Зарание спасибо.


Содержание

Сообщения в этом обсуждении
"Как в Perl-скрипте получить тело письма?"
Отправлено amber46 , 20-Май-03 03:37 
>Помогите плиз!!
>Мне надо в Perl-скрипте получить тело письма!!
>Я знаю что вродибе можно в файле alliases прописать скрипт.
>Так ли это?И всеравно! Даже если жто и так, то как принять
>тело
>писльма в самом скрипте?
>
>Зарание спасибо.


В aliase внести:
adress_kuda_slat: "|/put/do/tvoego/scripta"

в скрипте: ну тут мона развлечся на полную катушку, но я рекомендую посмотреть в сторону перловой библиотеки MIME-tools
скачать ее мона отсюда:
http://search.cpan.org/CPAN/authors/id/E/ER/ERYQ/MIME-tools-...
внутри очень много примеров как эти пользоваться.
В частности есть готовый mimedump который парсит письмецо и раскладывает его на составные части. body отдельно, аттачи отдельно.


"Как в Perl-скрипте получить тело письма?"
Отправлено dawnshade , 20-Май-03 09:41 
>>Помогите плиз!!
>>Мне надо в Perl-скрипте получить тело письма!!
>>Я знаю что вродибе можно в файле alliases прописать скрипт.
>>Так ли это?И всеравно! Даже если жто и так, то как принять
>>тело
>>писльма в самом скрипте?
>>
>>Зарание спасибо.
>
>
>В aliase внести:
>adress_kuda_slat: "|/put/do/tvoego/scripta"
>

Абсолютно точно. Данные будут поступать на STDIN.


"Как в Perl-скрипте получить тело письма?"
Отправлено gennady , 20-Май-03 12:00 
>>В aliase внести:
>>adress_kuda_slat: "|/put/do/tvoego/scripta"
>>
>
>Абсолютно точно. Данные будут поступать на STDIN.
Точнее, должен быть указан путь в пайп, и данные будут поступать в пайп. А скрипт должен их оттуда забирать.

"Как в Perl-скрипте получить тело письма?"
Отправлено Bart_Simpson , 20-Май-03 12:12 
>>>В aliase внести:
>>>adress_kuda_slat: "|/put/do/tvoego/scripta"
>>>
>>
>>Абсолютно точно. Данные будут поступать на STDIN.
>Точнее, должен быть указан путь в пайп, и данные будут поступать в
>пайп. А скрипт должен их оттуда забирать.


Что то странно, я хотел завести пользователя proxy что бы при проходе письма отрабатывал sarg, так вот не работает и все, postfix говорит не могу дописать данные, файл исполняемый. Пробовал прописывать в каталог ~/.forward, тоже тишина.


"Как в Perl-скрипте получить тело письма?"
Отправлено Anubis , 21-Май-03 21:37 
>>>Помогите плиз!!
>>>Мне надо в Perl-скрипте получить тело письма!!
>>>Я знаю что вродибе можно в файле alliases прописать скрипт.
>>>Так ли это?И всеравно! Даже если жто и так, то как принять
>>>тело
>>>писльма в самом скрипте?
>>>
>>>Зарание спасибо.
>>
>>
>>В aliase внести:
>>adress_kuda_slat: "|/put/do/tvoego/scripta"
>>
>
>Абсолютно точно. Данные будут поступать на STDIN.

У меня не получается получить тело письма!!!!
Пробую так:
#!/usr/bin/perl

open (LG,">>/etc/test/test_sms")|| print "ERROR: Can't open log.\n";
flock(LG,2);
while(<>)
{
$swe=getc;
print LG "$swe";
}
close (LG);
Подскажите плиз как мне тело получить и в файл записать.

Зарание спасибо.


"Как в Perl-скрипте получить тело письма?"
Отправлено dawnshade , 22-Май-03 09:17 

>while(<>)
Надо while (<STDIN>)

>$swe=getc;
Соттв. эта строка не нужна.


"Как в Perl-скрипте получить тело письма?"
Отправлено DogEater , 22-Май-03 10:59 
>
>>while(<>)
>Надо while (<STDIN>)
>
>>$swe=getc;
>Соттв. эта строка не нужна.

Может так?
while ($var=<stdin>){
  if ($var eq "\n"){
    $flag="readbody";
  }


}


"Как в Perl-скрипте получить тело письма?"
Отправлено DogEater , 22-Май-03 11:03 
>
>>while(<>)
>Надо while (<STDIN>)
>
>>$swe=getc;
>Соттв. эта строка не нужна.

Предыдущий пост не считается  - рука дрогнула...


Тело письма обычно (:-)) отделяется от заголовка пустой строкой
Может так?

while ($var=<stdin>){
══if ($var eq "\n"){
════$flag="readbody";
══}
  if ($flag eq "readbody"){
    push (@body, $var);
  }
}

Неизящно, по ламерски, но будет работать...