Добрый день. Настраиваю систему обработки почтовых сообщений. Сами сообщения падают на определённый почтовый ящик, откуда забираются с помощью fetchmail и обрабатываются в перловом скрипте, вот куски скрипта:
| Код | #!/usr/bin/perl -w use strict; use MIME::Base64 qw( decode_base64 ); use Encode; use utf8; use open qw(:std :utf8); use open IO => ":encoding(koi8-r)";
my $gs = '/usr/bin/gs'; my $rm = '/bin/rm'; my $mv = '/bin/mv'; #Разбиваем письмо на заголовок и тело, сохраняем их в отдельных переменных my (%head, @body); my ($return,$subj,$number,$att_name,$filetype); { local $/ = ""; my $head = <STDIN>; $head =~ s/\n\s+/ /gs; my @head = split /\n/,$head; %head = map { my ($a,$b) = split (/:\s+/,$_,2); lc $a => $b } @head; } $/ = ""; while (<STDIN>) { $_ =~ s/\n\s+/ /gs; my @_body = split /\n/,$_; push(@body, @_body); } #Разбираем заголовок письма, выбраем адрес отправителя и тему письма while (my ($key,$value) = each(%head)) { $return = $value if ($key =~ /^[rR]eturn-[pP]ath/); $subj = $value if ($key =~ /^[sS]ubject/); } $return =~ s/[<>]//g; $subj = Encode::decode("MIME-Header","$subj"); ..... open (MAIL, "| /usr/local/bin/mutt $return -s \"FAXREPLY: $subj\" ") or die "can't open mutt: $!"; print MAIL "факс успешно отправлен\n\n________________\ndocname: $att_name\nresultcode: 0"; close MAIL;
|
Суть скрипта - выдёргивать из сообщения тему письма, имя аттача и MIME самого аттача. Далее MIME декодируется в исходный файл и этот файл отправялется по факсу. В конце абоненту отсылается ответ об успешной отправке факса. Настройки mutt:
| Код | set realname="IP PBX" set sendmail="/usr/bin/msmtp" #set allow_8bit=yes #set ascii_chars=yes set charset="koi8-r" set send_charset="koi8-r" set from="<email>"
|
Проблема заключается в том, что письма с успешным статусом, отправленные из скрипта, абоненту приходят с кракозябрами в теме сообщения, хотя текст сообщения нормальный. Бьюсь уже второй день, подскажите, в какую сторону копнуть, заранее спасибо. P. S. в качестве системной локали используется UTF8
|