eMail über CGI/Perl-Script mit Outlook Express unter WIN98 senden
Peter Klein
- cgi
(Dies sind meine ersten Versuche mit CGI/Perl!) Ich verwende folgendes Script, um Formulardaten aufzubereiten und will diese dann an eine bestimmte eMail-Adresse schicken. Es funktioniert so weit, daß die Daten zwar korrekt erzeugt und Outlook Express gestartet wird, aber die Daten nicht in eine zu sendende eMail übernommen werden, geschweige denn, daß diese abgeschickt würde. Wahrscheinlich liegt es u.a. an fehlenden Aufrufparametern für Outlook Express - wenn ja, welche? Ein zweites Problem: Auch wenn ich bei $Mailprog= etwas völlig sinnloses eingebe, erscheint die Fehlermeldung "Mailprogramm kann nicht gestartet werden\n" nicht. Warum? Und wo müßte sie eigentlich erscheinen? Gibt es eine Möglichkeit, daß das ganze Geschehen im Hintergrund geschieht, daß der Nutzer gar nicht eingreifen muß und kann? Vielleicht gibt es ja auch eine völlig andere Lösung für die Aufgabe, Formulardaten aufzubereiten und automaticsh an eine bestimmte Adresse zu verschicken?
PS: Falls das von Interesse ist: ich habe einen lokalen WWW-Server für die CGI-Schnittstelle installiert (OmniHTTPd).
Ich bin für jede Hilfe dankbar. Also: DANKE!
---------Anfang Script--------
#!/usr/bin/perl
read (STDIN,$Daten,$ENV{'CONTENT_LENGTH'});
print "Content-type: text/html\n\n";
print "<html><head><title>Test-Feedback</title></head>\n";
print "<body>\n";
@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)
{
($name,$value) = split(/=/,$Feld);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$value =~ s/<!--(.\n)*-->//g;
push(@Formular,$name,$value);
}
$Mailprog = "C:\Programme\Outloo~1\msimn.exe";
%HFormular = @Formular; #Liste in Hash kopieren
open(MAIL,"$Mailprog") die "Mailprogramm kann nicht gestartet werden\n";
open(LOGF,">Feedback._log"); #parallel in Logfile ablegen
print MAIL "To: $HFormular{'recipient'}\n";
print LOGF "To: $HFormular{'recipient'}\n";
print MAIL "From: $HFormular{'eMail'} ($HFormular{'Name'})\n";
print LOGF "From: $HFormular{'eMail'} ($HFormular{'Name'})\n";
print MAIL "Subject: Feedback zu "$HFormular{'LE'}"\n\n";
print LOGF "Subject: Feedback zu "$HFormular{'LE'}"\n\n";
for($i=0;$i<=$#Formular;$i=$i+2)
{
print MAIL "$Formular[$i]: $Formular[$i+1]\n";
print LOGF "$Formular[$i]: $Formular[$i+1]\n";
}
print MAIL "---EOF---";
print LOGF "---EOF---";
close(MAIL);
close(LOGF);
print "<br><center><big>Ihre Daten wurden gesendet!</big><br>\n";
print "<br>(Dieses Fenster können Sie wieder schließen)</center>\n";
print "</body></html>\n";
---------Ende Script--------