Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Помогите чайнику. Почему не работает?


Автор: SHAmanovi4 13.9.2006, 10:04
Здравствуйте.
Помогите учащемуся. Есть скрипт:
Код

sub sendmail    {
open (MAIL,"|$mail_cmd") || print ("Could not execute '$mail_cmd'");
print MAIL <<End_of_Mail;
From: "$param{name}" <$param{email}>
To: "$mymail" <$mymail>
Subject: $param{title}
MIME-Version: 1.0
X-Ident-From: unknown
X-Priority: 3
Content-Type: text/plain; charset="Windows-1251"
Content-Transfer-Encoding: 8bit


$param{text}
================
Банк Аниме. Письмо с сайта.
http://anime.insyss.ru
End_of_Mail
close (MAIL);
}


Где $mail_cmd = '/usr/bin/sendmail -t -v';

Вопрос: почему почта не отправляется? Самое прикольное то, что скрипт:
1) получает верные данные (проверено)
2) верно обрабатывает данные (аналогично)
3) верно выводит (то же)
4) выводит отчет о успешном завершении работы скрипта. То есть, вроде как работает.

На деле ничего никуда не отправляется. Обращался в сервис-службу. Сказали, что у них все ОК, что сендмайл их лежит где надо и работает как полагается.

Я уже не знаю где может быть ошибка! smile Помогите пожалуйста!

Автор: nitr 13.9.2006, 10:54
ну я не могу протестить... так чуть подправим что увидел ;)

строка 2 заменить 
Код
open (MAIL, " |$mail_cmd ") or die "Could not execute '$mail_cmd' : $!";
 в этом случае точно при ошибке её выведет

ну и проверь параметры что передаёшь.

Автор: korob2001 13.9.2006, 11:11
Модератор: Название темы, должно отражать её суть.

Автор: SHAmanovi4 13.9.2006, 12:33
Цитата(nitr @  13.9.2006,  10:54 Найти цитируемый пост)
ну и проверь параметры что передаёшь. 

Проверял. Все нормально....
Цитата(korob2001 @  13.9.2006,  11:11 Найти цитируемый пост)
Модератор: Название темы, должно отражать её суть. 

Да, простите, не почитал правила. Да и сам ступил. Больше не повторится!

Автор: nitr 13.9.2006, 12:44
вызови процедуру sendmail;
в неё внеси
print "и твои переменные";
может твоя процедура их не видит? our объяви smile

либо передавай процедуре sendmail, примерно так:
Код

...
sendmail($mymail, %param); #передаём мыло и хеш параметров :)
...

sub sendmail {
my $mymail = shift;
my %param = shift; #а тут принимаем ;)

open (MAIL, "| ") or die "Could not execute 'sendmail': $!";
print MAIL <<End_of_Mail;
From: "$param{name}" <$param{email}>
To: "$mymail" <$mymail>
Subject: $param{title}
MIME-Version: 1.0
X-Ident-From: unknown
X-Priority: 3
Content-Type: text/plain; charset="Windows-1251"
Content-Transfer-Encoding: 8bit


$param{text}
================
Банк Аниме. Письмо с сайта.
http://anime.insyss.ru
End_of_Mail
close (MAIL);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)