Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mutt + perl + koi8-r, проблема с кодировкой 
:(
    Опции темы
noize
Дата 10.7.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



Добрый день. Настраиваю систему обработки почтовых сообщений. Сами сообщения падают на определённый почтовый ящик, откуда забираются с помощью 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 - 10.7.2010, 23:31
PM MAIL   Вверх
arto
Дата 10.7.2010, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



а зачем вам мutt?
PM MAIL ICQ   Вверх
noize
Дата 10.7.2010, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



хмм...странный вопрос. Ну наверное потому, что его легко настроить и использовать для отправки писем из консоли
PM MAIL   Вверх
arto
Дата 10.7.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



"Сами сообщения падают на определённый почтовый ящик, откуда забираются с помощью fetchmail и обрабатываются в перловом скрипте" -- мутта не усматриваю.
или он с другой стороны?

во всяком случае попробуйте MIME::Words
PM MAIL ICQ   Вверх
noize
Дата 10.7.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



Читаем внимательней. Сообщения забираются с помощью fetchmail и с этим проблем нет, и нет проблем с парсингом сообщения. Проблема возникает при отправке успешного статуса абоненту, в приведённом куске скрипта в самом низу.

P. S. подправил исходное сообщение, чтобы не возникало путаницы 

Это сообщение отредактировал(а) noize - 10.7.2010, 23:32
PM MAIL   Вверх
arto
Дата 10.7.2010, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



тогда man mutt, и все вопросы разработчикам mutt.
если вам обязательно через mutt.
PM MAIL ICQ   Вверх
noize
Дата 11.7.2010, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



Мне всё-равно через что, главное - чтоб работало. В данный момент ещё ковыряю exim 
PM MAIL   Вверх
arto
Дата 11.7.2010, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



удачи. exim -- mta.
вам понадобятся еще rfc 2045, 2046, 2047, 2049
PM MAIL ICQ   Вверх
noize
Дата 11.7.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



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

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0810 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.