помогите заставить perl-скрипт писать по-русски

12
achilies
На сайте с 12.08.2006
Offline
117
958

Здравствуйте!

Подскажите пожалуйста, у моего хостинг-провайдера есть набор предустановленных perl-скриптов. В частности, необходимо модифицировать perl-cкрипт формы по отправке сообщений прямо со страницы.

вот код этого скрипта (размер 30 кб)

Можно ли сделать так, чтобы тема приходящего сообщения была на русском языке (в кодировке win 1251) ? Если в лоб исправить тело скрипта, то в теме приходят закорючки и прочая ересь. Само тело сообщения нормально содержит русские буквы.

Возможно ли это сделать вообще ?

заранее спасибо

p.s. советовать перейти на другой скрипт лучше не надо ;)

L
На сайте с 02.12.2006
Offline
28
Lys
#1

# Open The Mail Program

open(MAIL,"|$mailprog -f".$Config{'email'});

print MAIL "Content-type:text/plain\; charset=windows-1251\n";

print MAIL "Reply-To: $Config{'email'}\n";

print MAIL "Return-Path: $Config{'email'}\n";

print MAIL "To: $Config{'recipient'}\n";

print MAIL "From: $Config{'email'} ($Config{'realname'})\n";

# Check for Message Subject

В указанный фрагмент кода добавляете строку, выделенную жирным шрифтом

Возьму на продвижение 2-3 сайта. Стоимость оценивается по И.Ашманову (http://www.optimization.ru/articles/seo2007) - по частотности запроса в Рамблере. Собственная методика и П/О для анализа ссылочного ранжирования. Общая паника не волнует!
achilies
На сайте с 12.08.2006
Offline
117
#2
Lys:
В указанный фрагмент кода добавляете строку, выделенную жирным шрифтом

К сожалению ничего не изменилось....вот такая дрянь:

БЮЬЮ ГЮЪБЙЮ ОПХМЪРЮ Х НАПЮАНРЮМЮ

всместо 'ваша заявка принята и обработана'

может, правку надо делать в куске кода, который на самой странице живет ?

L
На сайте с 02.12.2006
Offline
28
Lys
#3

Киньте мне в личку или прямо сюда весь исходный код пришедшего письма.

Видимо где-то в другом месте прописывает иную кодировку - нужно посмотреть, где...

progress
На сайте с 11.07.2006
Offline
125
#4

Такое ощущение что заголовок Вы написали в КОИ-8, не в шелле правили скрипт?

А вообще - использовать напрямую русские буквы в заголовке - не лучшая идея, на него будут брехать антиспамы.

Лучше его закодировать

require MIME::QuotedPrint;

$Config{'subject'} = '=?windows-1251?q?' . &MIME::QuotedPrint::encode_qp($Config{'subject'});

$Config{'subject'} =~ s/\s/_/g;

chop($Config{'subject'});

chop($Config{'subject'});

$Config{'subject'} .= '?=';

P
На сайте с 05.06.2007
Offline
26
#5
achilies:
Можно ли сделать так, чтобы тема приходящего сообщения была на русском языке (в кодировке win 1251) ? Если в лоб исправить тело скрипта, то в теме приходят закорючки и прочая ересь. Само тело сообщения нормально содержит русские буквы.

Возможно ли это сделать вообще ?

заранее спасибо

p.s. советовать перейти на другой скрипт лучше не надо ;)

Вот там, где начинается страница ответа, цитирую:

# Otherwise, begin printing the response page. #

else {

# Print HTTP header and opening HTML tags. #

print "Content-type: text/html\n\n";

print "<html>\n <head>\n";

# Print out title of page #

if ($Config{'title'}) { print "<title>$safeConfig{'title'}</title>\n" }

else { print "<title>Спасибо, ваше сообщение было отправлено</title>\n" }

print " </head>\n <body";

Там и нужно заменить строку:

print "Content-type: text/html\n\n";

на строку:

print "Content-type: text/html; charset=windows-1251\n\n";

И еще, не хочется вникать, но не нравится строчка:

if ($Config{'title'}) { print "<title>$safeConfig{'title'}</title>\n" }

тут хотелось бы без if иметь русский текст.

И вообще где есть в скрипте Content-type: text/html

замените на Content-type: text/html; charset=windows-1251

progress
На сайте с 11.07.2006
Offline
125
#6
if ($Config{'title'}) { print "<title>$safeConfig{'title'}</title>\n" }

Правда странная строка - проверяем одно, пишем другое

А не, посмотрел, все нормально там, нормальная строка

achilies
На сайте с 12.08.2006
Offline
117
#7
progress:
Такое ощущение что заголовок Вы написали в КОИ-8, не в шелле правили скрипт? А вообще - использовать напрямую русские буквы в заголовке - не лучшая идея, на него будут брехать антиспамы.

Всю правку делал прямо у хостера через панель управления, но дело в том что содержимое заголовка содержится в другом коде (прямо на странице).

А как же антиспамы не зарубают всю остальную корреспонденцию с русскими заголовками ?

progress
На сайте с 11.07.2006
Offline
125
#8

Они не зарубают, они ставят порядка одного очка за это - все зависит от настроек антиспама.

А вообще такое ощущение что Ваш заголовок в КОИ-8

Попробуйте закодировать заголовок как я написал - если опять будут крокозябры - поставьте вместо win-1251 вот это - koi-8-r

L
На сайте с 02.12.2006
Offline
28
Lys
#9

Ребята, я чего-то не догоняю. Вот исходник полученного письма, который переслал ТС.

Строка charset=windows-1251 имеется

Должно приходить в кириллице. Что за чертовня?

Мне кажется, просто у почтового клиента при получении стоит koi8

Return-Path: <emailaddress@bk.ru>

Delivered-To: emailaddress@achilies.user

Received: (qmail 26038 invoked by uid 504); 7 Jun 2007 13:12:30 -0000

Delivered-To: emailaddress@achilies.biz

Received: (qmail 31703 invoked by uid 649); 7 Jun 2007 13:12:29 -0000

Date: 7 Jun 2007 13:12:29 -0000

Message-ID: <20070607131229.8504.qmail@s441.sureserver.com>

Content-type:text/plain; charset=windows-1251

Reply-To: emailaddress@bk.ru

To: emailaddress@achilies.biz

From: emailaddress@bk.ru ()

Subject: ваша заявка принята и обработана

progress
На сайте с 11.07.2006
Offline
125
#10

Странно вообщето... Походу почтовый клиент чтото мутит

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий