Forum Webscript.Ru

Программирование => Perl => Тема начата: Skif от 23 Сентября 2005, 12:13:27

Название: Глюки Mail::Sender
Отправлено: Skif от 23 Сентября 2005, 12:13:27
Есть код работающий по разному на разных машинах. Почему - понять не могу:


Цитировать

sub send_mail {
shift @_;
my $result = 0;

my $smtpserver = shift @_;
my $smtpport = shift @_;
my $from = shift @_;
my $to = shift @_;
my $subj = shift @_;
my $message = shift @_;
my $attache = shift @_;
my $logfile = shift @_;
#;read_conf($conf,\'logfile\') || \'/var/log/urbd.log\' ;

print "Sending mail:\\n";
print "SMTP - $smtpserver\\n";
print "SMTP PORT - $smtpport\\n";
print "FROM: $from\\n";
print "TO: $to\\n";
print "Subject: $subj\\n";
print "Attached file: $attache\\n\\n";
print "\\n========------------- SMTP HEADER ---------------========\\n";

&logfile(\'sk_mod\',$logfile,"Sending mail...$subj");

$message = "$message \\n\\n";

open (MES, $logfile);
while () {
   $message = "$message$_";
}
close(MES);

my $sender = new Mail::Sender {smtp => $smtpserver, from => $from};
$sender->MailFile({to => $to,
   subject => $subj,
   msg => $message,
   file => $attache}) or $result = 1;
   
$sender->Close;# || &logfile($logfile,"Failed sand message $sender->{\'error_msg\'}"); # or  $result = 2;

print "\\nresult of sending mail ... :$result\\n";

if ($result == 0) {
   &logfile(\'sk_mod\',$logfile,"Mail sended");
}

if ($result == 2) {
   &logfile(\'sk_mod\',$logfile,"Failed sand message $sender->{\'error_msg\'}");
}
sleep 5;

return $result;
}




Mail::Sender стоит на всех тазиках. Ругается на строку

Цитировать
123
[root@k] /usr/ports/mail/p5-Mail-Sender/:/usr/local/script/urbd/bin/urbdmailclean.pl -conf=/usr/local/script/urbd/etc/sk_mailclean.conf
Ok!
Trying send mail....
Sending mail:
SMTP - 127.0.0.l
SMTP PORT - 25
FROM: mailclean.urbd
TO: mailclean.report@klo.kiev.ua
Subject: CLEAN MAIL REPORT
Attached file: /usr/local/script/urbd/log/mailclean.log


========------------- SMTP HEADER ---------------========
Can\'t call method "MailFile" without a package or object reference at /usr/local/script/urbd/lib/sk_mod.pm line 86.
[root@k] /usr/ports/mail/p5-Mail-Sender/:                                                                

На другой машине все проходит на ура с сим скриптом и пакектом.
В чем могут быть грабли?
Название: Глюки Mail::Sender
Отправлено: Chs от 28 Сентября 2005, 15:52:17
Дык англицким же языком написано:
Can\'t call method "MailFile" without a package or object reference at /usr/local/script/urbd/lib/sk_mod.pm line 86
Объект у тебя не создается.
А почему - разбирайся.