Решено: mutt + perl + koi8-r (проблема с кодировкой)

Модератор: Модераторы разделов

Аватара пользователя
noize
Сообщения: 164
ОС: Debian

Решено: mutt + perl + koi8-r

Сообщение noize »

Добрый день. Настраиваю систему обработки почтовых сообщений. Сами сообщения падают на определённый почтовый ящик, откуда забираются с помощью 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
Спасибо сказали:
Аватара пользователя
noize
Сообщения: 164
ОС: Debian

Re: Решено: mutt + perl + koi8-r

Сообщение noize »

Неактуально боле. Как всегда, проблема была в собственной невнимательности. Необходимо было в .muttrc выставить параметр set charset= в utf8 вместо koi8-r
Спасибо сказали: