Formmail-Skript
sabine
- cgi
Hallo,
Gibt es ein idiotensicheres formmail skript? Ich versuche mich nun schon seit Tagen an Konfigurationen von freeware Versionen, aber es gelingt mir nicht. Für Tips und Hilfen wäre ich dankbar,
Sabine
Hallo,
Gibt es ein idiotensicheres formmail skript? Ich versuche mich
su, Erwin
=cut
#!/usr/bin/perl
###########################################################################
###########################################################################
$to = 'roro@xwolf.de';
$confirm = 'http://home.vr-web.de/~rolfrost/confirm.html';
###########################################################################
$host = 'localhost';
###########################################################################
###########################################################################
###########################################################################
use strict;
use vars qw($to $host $confirm);
use subs qw(compute abbruch);
use CGI 'param';
use Net::SMTP;
compute;
exit;
###########################################################################
###########################################################################
sub mail{
# needs 5 or 6 arguments
my ($smtp_host, $rcpt, $subject, $msg, $abs_email, $abs_name) = @_;
my $from = ();
if($abs_name){ $from = "$abs_name <$abs_email>" }
else{ $from = "<$abs_email>"}
# Neues Objekt erstellen
my $s = new Net::SMTP($smtp_host);
# format the message
my $message = <<"--MSG";
From: $from
To: <$rcpt>
Subject: $subject
$msg
--MSG
# Ab geht die Post # dem SMTP Protocol entsprechendes Kommando
$s->mail($abs_email); # mail from:roro@local
$s->to( $rcpt ); # rcpt to:otto@local
$s->data( $message ); # data: eintippen der message, abschluss mit einem Punkt
$s->quit(); # quit
return 1;
}
###########################################################################
sub abbruch{
print "Content-type: text/html\n\n";
print qq(
<h1>$_[0]</h1>
<p>
$_[1]
);
exit;
}
###########################################################################
sub compute{
# Kontrolle der verwendeten Paramaternamen, diese Namen muss es geben
my %control = (
'from', 1,
'name', 1,
'subject',1,
'text',1,
);
my @names = param;
my $names = join "<br>", @names;
foreach my $name(@names){
if(not $control{$name}){
abbruch("Konfigurationsfehler","Falscher oder fehlender Parameter, bitte die Feldnamen from, name, subject und text verwenden, siehe Beschreibung im Script. Verwendet wurden die Feldnamen:<p>$names ");
}
}
# Testen des Postausgangsservers auf Port 25
my $client_sock = new IO::Socket::INET (
PeerAddr => $host,
PeerPort => 25,
Proto => 'tcp') or abbruch "Konfiguration oder Socketfehler","Der eingetragene Postausgangsserver $host ist an Port 25 nicht offen";
$client_sock->close();
# Nun die Parameter einlesen
my $from = param 'from' or abbruch "Fehleingabe","eMail ist erforderlich, Backbutton...";
my $name = param 'name' or abbruch "Fehleingabe","Name ist erforderlich, Backbutton...";
my $subject = param 'subject' or abbruch "Fehleingabe","Betreff ist erforderlich, Backbutton...";
my $text = param 'text' or abbruch "Fehleingabe","Text ist erforderlich, Backbutton...";
# Mail wird nun gesendet
mail($host,$to,$subject,$text,$from,$name) or abbruch "Fehler","Die Mail wurde nicht gesendet, moeglicherweise steht das Modul Net::SMTP nicht zur Verfuegung oder es wurde ein nicht funktionaler Postausgangsserver eingetragen.";
# Umleitung zu Bestaetigung
redir($confirm);
}
###########################################################################
sub trim{
my $s = shift;
$s =~ s/^\s+|\s+$//g;
return $s;
}
###########################################################################
sub redir{
my $url = shift;
print "Status: 302 Moved\n";
print "location: $url\n\n";
}
###########################################################################
hallo,
und wie binde ich das Skript in html ein: mit
<FORM method=GET action="cgi-bin/Dateiname.pl">
?
Hallo,
Gibt es ein idiotensicheres formmail skript? Ich versuche mich
su, Erwin
=cut
#!/usr/bin/perl###########################################################################
###########################################################################Konfiguration des Scripts
eMail - Adresse Empfaenger, bitte einfache Hochkomma
$to = 'roro@xwolf.de';
hallo,
und wie binde ich das Skript in html ein: mit
<FORM method=GET action="cgi-bin/Dateiname.pl">
Jow, ganz genau. Das Script kann sogar auch auf einem anderen Server laufen, erforderlich: auf dem Server muss es einen Mailerdienst geben (smtp - protokoll, port 25)
Schönen Sonntag, Erwin
#----------------------
#----------------------
#----------------------
#----------------------
# |
#----------------------