|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Denis Zwerew 2:5030/1521 08 Nov 2000 15:05:10 To : Andrey Brindeew Subject : RFC-1521 (1522) --------------------------------------------------------------------------------
Суб Hоя 04 2028 20:28, Andrey Brindeew wrote to All:
Вот кусок из моего примера, который читает заголовок и отображает его на вебе:
use MIME::Base64 ();
...
print "Content-type: text/html\n\n";
print "<HTML><HEAD><TITLE>Header of messages</TITLE>";
print '<META HTTP-EQUIV="Content-Type" CONTENT="text/plain; charset=koi8-r">
</HEAD><BODY>';
print "<TABLE BORDER=1>";
open(TEMP, "$dirname/$filename"); /$filename - файл с одним письмом
while($data=<TEMP>){
chomp($data);
if ($data =~ /^Date:/){
($date = $data) =~ s/^Date://g;
}
if ($data =~ /^From:/){
($from = $data) =~ s/^From://g;
$fromR = MIME_decoder($data);
}
if ($data =~ /^Subject:/){
($subj = $data) =~ s/^Subject://g;
$subjR = MIME_decoder($data);
}
}
close(TEMP);
print "<TR>";
print "<TD>$fromR</TD><TD>$subjR</TD><TD>$date</TD>";
print "</TR>";
print "</TABLE>";
print "</BODY></HTML>";
}
sub MIME_decoder{
($decoded) = @_;
if ($decoded =~ /iso-8859-5/){
$decoded =~ s/^.+\?iso-8859-5\?B\?(.+)\?.+$/$1/g;
$from_dec =
"°±¶іґµб¶·г№д»јЅѕзАБВГДЕЖЗИЙКЛМНОПРСТУФХёЦЧШЩЪЫЬЭЮЯрстуфхцчшщъыьэюя";
}
if ($decoded =~ /koi8-r/){
$decoded =~ s/^.+\?koi8-r\?B\?(.+)\?.+$/$1/g;
$from_dec =
"стччфхіцъщъыьэюяЁтуфхцшуюыэ\377щшьрёБВЧЗДЕгЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС";
}
if ($decoded =~ /windows-1251/){
$decoded =~ s/^.+\?windows-1251\?B\?(.+)\?.+$/$1/g;
$from_dec =
"АБВГДЕіЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯрстуфхгцчшщъыьэюяЁётуфхцчшщъыьэю\377";
}
if ($decoded =~ /cp866/){
$decoded =~ s/^.+\?cp866\?B\?(.+)\?.+$/$1/g;
$from_dec = "АБВГДЕЁЖЗИЙКЛМHОПРСТУФХЦЧШЩЪ
абвгдЅёжзійґлмно·рстуфхцчшщъыьэюя";
}
$to_dec =
"стччфхіцъщъыьэюяЁтуфхцшуюыэ\377щшьрёБВЧЗДЕгЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС";
$decoded = MIME::Base64::decode($decoded);
eval "\$decoded =~ tr/$from_dec/$to_dec/";
return($decoded);
}
AB> "Denis Zwerew" wrote:
>> попробуй так:
>> use MIME::Base64 ();
>> ...
>> $subj = "Subject: " . MIME_decoder("здесь пишем тему письма");
AB> Hа самом деле решение было-таки найдено: MIME::Words .
AB> Так что, видимо, придется мне разработать модуль, который бы строго
AB> следовал RFC-822 & RFC-1522 в части headers (т.е. просто скармливаем
AB> массив адресов, а модуль весьма аккуратно со всем этим разбирается,
AB> энкодит все как положено и скармливает полученное модулям MIME::* -
AB> для создания письма).
С наилучшими пожеланиями,
Denis.
ICQ UIN: 7311194 (Always OnLine)
Phone (work): 118-4800 (10:00 - 18:00)
--- System Administrator of Ilim Palp Enterprise
* Origin: -> Denis.Zverev@ipe.com.ru <- (2:5030/1521)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/146643a095fa8.html, оценка из 5, голосов 10
|