Avatar billede larsliin Nybegynder
18. december 2003 - 10:24 Der er 7 kommentarer og
1 løsning

cgi mail

Hej eksperter
Jeg får følgende fejlmeddelelse, når jeg submit'er min cgi mailform:

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
Can't call method "mail" on an undefined value at D:\wwwServices\www01\larsliin.dk\cgi-bin\formmail.pl line 17.

Mit script har virket fint tidligere, men nu gør ikke længere ..?!?! Kan ikke gennemskue fejlen.
Test evt. mailformén på http://www.larsliin.dk
cgi-scriptet ligger som tekst-fil på http://www.larsliin.dk/cgi-bin/formmail.txt
Avatar billede mfalck Praktikant
18. december 2003 - 10:47 #1
prøv evt at sætte følgende ind i dit script:

use CGI::Carp qw(fatalsToBrowser);

så får du (måske) lidt mere sigende fejl ud på skærmen ... kan du forresten køre scriptet fra kommandolinen ?
Avatar billede mfalck Praktikant
18. december 2003 - 10:51 #2
prøv evt at skrive

use CGI;
use Net::SMTP;

# DISSE VARIABLER ER KUN MED FOR NEMHEDSSKYLD, DU KAN FINT SKRIVE
# INFORMATIONERNE I FUNKTIONSKALDENE
$mydomain="larsliin.dk";
$myaccount="lars";
$myname="LarsLiin, kontakt";
$myrecipientname="Lars";
$myrecipient = 'lars@larsliin.dk';

my $q = new CGI();
print $q->header;
print $q->start_html('test');

#$smtp = Net::SMTP->new("mail.$mydomain",
#        Hello => "www.$mydomain",
$smtp = Net::SMTP->new("192.168.100.2",
        Hello => "www.$mydomain",
        Timeout => 30,
        Debug=>1);                # opret en forbindelse til serveren
print "smtp = $smtp";
$smtp->mail( "$myaccount/@$mydomain" );    # hvem er afsenderen (e-mail adresse)
$smtp->to($myrecipient);            # modtagerens e-mail adresse
$smtp->data();                    # Start the mail

# SEND HEADER INFO
$smtp->datasend("To: \"$myrecipientname\" <$myrecipient>\n");
$smtp->datasend("From: \"$myname\" <$myaccount\@$mydomain>\n");
$smtp->datasend("\n");#tom linie der indikerer at der ikke er flere headers
# SEND BODY






# HENT ALLE FELTER/DATA I QUERY'EN (LOOPER)
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $FORM{$name} = $value;
}

# UDSKRIV TIL EMAIL
$smtp->datasend("Email via hjemmeside, larsliin.dk:\n\n");
$smtp->datasend("Fra: $FORM{'navn'}\n");
$smtp->datasend("Emne: $FORM{'emne'}\n");
$smtp->datasend("Bemærkning:\n$FORM{'comments'}\n\n");
$smtp->datasend("Afsenders mailadresse: $FORM{'email'}\n");
$smtp->dataend(); # Finish sending the mail
$smtp->quit;# Close the SMTP connection


# REDIRECT TIL TAKSIDE
print "Location: http://www.larsliin.dk/mail/tak.htm\n\n";
exit;
Avatar billede larsliin Nybegynder
18. december 2003 - 10:58 #3
hmm .. intet virker!
Avatar billede mfalck Praktikant
18. december 2003 - 11:12 #4
mit gæt er at din mailserver ikke vil lade dig sende mails og derfor bliver $mail udefineret; kan du evt noget i mail-serverens logfiler ?
Avatar billede mfalck Praktikant
18. december 2003 - 11:12 #5
hvad sker der hvis du prøver at køre programmet fra kommandolinien ?

prøv evt med

$smtp = Net::SMTP->new("192.168.100.2",
        Hello => "www.$mydomain",
        Timeout => 30,
        Debug=>1);
Avatar billede larsliin Nybegynder
18. december 2003 - 11:23 #6
Indsatte den ekstra linie uden held.
Kommer iøvrigt ii tanke om, at serveradmin har rodet rundt med serveren, hvilket jeg fandt ud af, da jeg ikke kunne modtage/sende mails via mit domæne. Fik rettet min mailoptions i outlook, men fandt aldrig ud af problemet med min mailform/cgi-script på mit site (hvilket jeg prøver nu). Det kan måske have noget med dét at gøre?!

Lige et rigtigt dumt spørgsmål: ved ikke lige hvordan jeg 'kører programmet fra kommandolinien'? Arbejder ikke med cgi til dagligt ..
Avatar billede mfalck Praktikant
18. december 2003 - 11:30 #7
det lyder meget sandsynligt at det har noget med det at gøre.

med at køre det fra kommandolinien mener jeg bare at køre programmet fra windows (enten at dobbelt klikke på det eller starte det fra Activestate Perl - eller hvad du nu bruger)
Avatar billede larsliin Nybegynder
18. december 2003 - 11:35 #8
hm! Taler lige med server-administratoren. Han må kunne svarer mig på mit spørgsmål. Vender lige tilbage senere ..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester