Код: Выделить всё
#!/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