Schrift
[thread]481[/thread]

cgi Mailerscript - Verweis nach Absenden auf ander



<< >> 5 Einträge, 1 Seite
Gast Gast
 2005-04-22 11:37
#4859 #4859
Halli Hallo !
Bin auf dem GGI eher Neuling. Im folgenden poste ich ein cgi script.
Es ist ein mailer script.
Habe es in meine Seite eingebaut und es funktioniert einwandfrei. Allerdings, wenn man das Formular absendet, wird eine Tabelle angezeigt, wo nocheinmal alle Daten angezeigt werden, die man im Formular eingetragen hat.
Wäre nett, wenn mir jemand im Script die Stelle zeigen könnte, wo man auf ein anderes HTML-Doc verweist, dass dann sowas ausgibt wie z.B
"Vielen Dank für Ihr Interesse..." (irgendsowas in der Art)
Mit dem dazugehörigen befehl.

Ich denke ich habe die Stelle im script schon gefunden. Nur das "WIE" ist die Frage. Wäre für Eure Hilfe sehr dankbar.

Hier das Script:

#! /usr/bin/perl

# #

# E i n s t e l l u n g e n f a n g e n h i e r a n! #

#/---------------------------------------------------------------------\#

%CFG = (

EMPFAENGER => 'tante_horst@hotmail.com',

BACK_URL => 'http://www.xn--fuldabrck-w9a.de',

MAIL_PROG => '/usr/sbin/sendmail',

SAVE_MAIL_IN_LOG_FILE => 'YES',

LOG_FILE => '../logs/formularmailer.log',

USE_FLOCK => '0',

SIGNATURE_FILE => 'http://www.xn--fuldabrck-w9a.de/cgi-bin/formularmailer.sig',

HTML_HEADER_FILE => 'http://www.xn--fuldabrck-w9a.de/cgi-bin/header.htm', ----------à Hatte es hier mal Probiert!?!

HTML_FOODER_FILE => 'http://www.xn--fuldabrck-w9a.de/cgi-bin/header.htm', ---------à und hier !?!

SUBJECT_MAIL => 'LAN-Party Teilnahme',

FONT_FACE => 'arial',

GUI_COLOR_1 => '#000000',

GUI_COLOR_2 => '#f5f5ff',

TABLE_WIDTH => '700',

CHARSET => 'iso8859-1',

TXT_BEFORE_DATA => 'Wir haben Ihre Anfrage erhalten und werden diese schnellstmöglichst bearbeiten und uns bei Ihnen per EMail melden!',

TXT_BEFORE_INPUT => 'Ihre Formulardaten lauten:',

ANREDE_HERR => 'Sehr geehrter Herr',

ANREDE_FRAU => 'Sehr geehrte Frau',

ANREDE_OTHER => 'Sehr geehrte Damen und Herren',

STD_ERROR => 'mailer@xn--fuldabrck-w9a.de',

VERSION => '0.815,

);

#\---------------------------------------------------------------------/#

# #

# #

#########################################################################



#///////////////////////////////////////////////////////////////////////#

# #

#///////////////////////////////////////////////////////////////////////#



if ($ENV{'REQUEST_METHOD'} =~ /GET/i) {

$names_values = $ENV{'QUERY_STRING'}

}

elsif ($ENV{'REQUEST_METHOD'} =~ /POST/i) {

read(STDIN, $names_values, $ENV{'CONTENT_LENGTH'});

}

else {

($names_values) = @ARGV;

}



@NAMES_VALUES = split(/&/, $names_values);

foreach $name_value (@NAMES_VALUES) {

($name, $value) = split(/=/, $name_value);

$name =~ tr/+/ /;

$value =~ tr/+/ /;

$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$INPUT{$info1} = $value;

if (($name ne '') && ($value ne '')) {

push(@FORM_INPUT, $name, $value);

}

}



if ($INPUT{ANREDE} eq '') {

$INPUT{ANREDE} = 'NOBODY';

}

if ($INPUT{NAME} eq '') {

$INPUT{NAME} = 'NOBODY';

}

if ($INPUT{EMAIL} eq '') {

$INPUT{EMAIL} = $CFG{STD_ERROR};

}



&SAVE_IN_LOGFILE;

&SEND_MAIL_TO_EMPFAENGER;

&SEND_MAIL_TO_SENDER;

&HTTP_HEADER(0);

&HTML_MAIN;



#///////////////////////////////////////////////////////////////////////#

# #

#///////////////////////////////////////////////////////////////////////#



sub SAVE_IN_LOGFILE {

if ($CFG{SAVE_MAIL_IN_LOG_FILE} eq 'YES') {

if ($CFG{USE_FLOCK} == 1) {

use Fcntl ':flock';

}

open(LOG_FILE, ">>$CFG{LOG_FILE}") || print STDERR "COULD NOT OPEN $CFG{LOG_FILE} TO WRITE: $!\n";

if ($CFG{USE_FLOCK} == 1) {

flock(LOG_FILE, LOCK_EX) || print STDERR "COULD NOT FLOCK $CFG{LOG_FILE}: $!\n";

}



my $i=0;

while ($FORM_INPUT[$i] ne '') {

unless ($FORM_INPUT[$i] =~ /x|y/i) {

print LOG_FILE "$FORM_INPUT[$i]\: $FORM_INPUT[$i+1]\n";

}

$i+=2;

}

print LOG_FILE "\n------------------------------------------------------\n\n";

close(LOG_FILE);

}

}



#///////////////////////////////////////////////////////////////////////#

# #

#///////////////////////////////////////////////////////////////////////#



sub SEND_MAIL_TO_EMPFAENGER {

open(EMPFAENGER_MAIL, "|$CFG{MAIL_PROG} $CFG{EMPFAENGER}") || print "COULD NOT OPEN $CFG{MAIL_PROG} TO PIPE: $!\n";

print EMPFAENGER_MAIL ("To: $CFG{EMPFAENGER}\n");

print EMPFAENGER_MAIL ("From: $INPUT{EMAIL}\n");

print EMPFAENGER_MAIL ("Subject: $CFG{SUBJECT_MAIL}\n\n");

Ich vermiute malhier in dem ROT markierten Bereich muss auf das HTML-Doc verwiesen werden oder???

print EMPFAENGER_MAIL "------------------------------------------------------\n";

my $i=0;

while ($FORM_INPUT[$i] ne '') {

unless ($FORM_INPUT[$i] =~ /x|y/i) {

print EMPFAENGER_MAIL "$FORM_INPUT[$i]\: $FORM_INPUT[$i+1]\n";

}

$i+=2;

}

print EMPFAENGER_MAIL "------------------------------------------------------\n\n";
close(EMPFAENGER_MAIL);

}



#///////////////////////////////////////////////////////////////////////#

# #

#///////////////////////////////////////////////////////////////////////#



sub SEND_MAIL_TO_SENDER {

if ($INPUT{EMAIL} ne $CFG{STD_ERROR}) {

open(SENDER_MAIL, "|$CFG{MAIL_PROG} $INPUT{EMAIL}") || print STDERR "COULD NOT OPEN $CFG{MAIL_PROG} TO PIPE: $!\n";

print SENDER_MAIL ("To: $INPUT{EMAIL}\n");

print SENDER_MAIL ("From: $CFG{EMPFAENGER}\n");

print SENDER_MAIL ("Subject: $CFG{SUBJECT_MAIL}\n\n");



if ($INPUT{ANREDE} =~ /Herr/i) {

print SENDER_MAIL "$CFG{ANREDE_HERR} $INPUT{NAME}!\n\n";

}

elsif ($INPUT{ANREDE} =~ /Frau/i) {

print SENDER_MAIL "$CFG{ANREDE_FRAU} $INPUT{NAME}!\n\n";

}

else {

print SENDER_MAIL "$CFG{ANREDE_OTHER}!\n\n";

}



print SENDER_MAIL "$CFG{TXT_BEFORE_DATA}\n\n";

print SENDER_MAIL "$CFG{TXT_BEFORE_INPUT}\n";

print SENDER_MAIL "------------------------------------------------------\n";

my $i=0;

while ($FORM_INPUT[$i] ne '') {

unless ($FORM_INPUT[$i] =~ /x|y/i) {

print SENDER_MAIL "$FORM_INPUT[$i]\: $FORM_INPUT[$i+1]\n";

}

$i+=2;

}

print SENDER_MAIL "------------------------------------------------------\n\n";



open(SIGNATURE_FILE, "<$CFG{SIGNATURE_FILE}") || print STDERR "COULD NOT OPEN $CFG{SIGNATURE_FILE}: $!\n";

print SENDER_MAIL <SIGNATURE_FILE>;

close(SIGNATURE_FILE);

close(SENDER_MAIL);

}

}



#///////////////////////////////////////////////////////////////////////#

# #

#///////////////////////////////////////////////////////////////////////#



sub HTTP_HEADER {

($_) = @_;

$|=1;

print "Expires: ". gmtime(time + $_) ." GMT\n";

print "Last-Modified: ". gmtime(time) ." GMT\n";

print "Content-Type: text/html;charset=$CFG{CHARSET}\n\n";

}



#///////////////////////////////////////////////////////////////////////#

# #

#///////////////////////////////////////////////////////////////////////#



sub HTML_MAIN {

if (-f "$CFG{HTML_HEADER_FILE}") {

open (HTML_HEADER, "< $CFG{HTML_HEADER_FILE}") || print STDERR "$CFG{HTML_HEADER_FILE}: $!\n";

print <HTML_HEADER>;

close (HTML_HEADER);

}

else {

print "<html><head><title>formularmailer.pl/$CFG{VERSION}</title></head>\n";

print "<body text=\"#00000\" bgcolor=\"#f5f5ff\">\n";

}



print "<table border=\"0\" width=\"$CFG{TABLE_WIDTH}\" cellspacing=\"0\" cellpadding=\"0\"><tr><td align=\"center\">";

print "<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"$CFG{GUI_COLOR_1}\"><tr><th>\n";

print "<table border=\"0\" width=\"100%\" cellspacing=\"1\" cellpadding=\"0\"><tr><td align=\"center\" bgcolor=\"$CFG{GUI_COLOR_2}\">\n";

print "<br><table border=\"0\" width=\"80%\" cellspacing=\"0\" cellpadding=\"0\">\n";

$i=0;

while ($FORM_INPUT[$i] ne '') {

print "<tr><td width=\"20%\"><font face=\"$CFG{FONT_FACE}\" size=\"2\"><b><i>$FORM_INPUT[$i]</i></b>:</font></td><td width=\"80%\"><font face=\"$CFG{FONT_FACE}\" size=\"2\">$FORM_INPUT[$i+1]</font></td></tr>\n";

$i+=2;

}

print "</table>\n";

print "<font face=\"$CFG{FONT_FACE}\" size=\"2\"><p align=\"center\"><a href=\"$CFG{BACK_URL}\">Zurück</a><br>&nbsp;</p></font>\n";

print "</td></tr></table></th></tr></table>\n";

print "<p align=\"center\"><font face=\"$CFG{FONT_FACE}\" size=\"1\">formularmailer.pl/$CFG{VERSION} - <a href=\"http://www.xn--fuldabrck-w9a.de/\">http://www.xn--fuldabrck-w9a.de/</a></font></p>\n";

print "</td></tr></table>\n";



if (-f "$CFG{HTML_FOOER_FILE}") {

open (HTML_FOODER, "< $CFG{HTML_FOOER_FILE}") || print STDERR "$CFG{HTML_FOOER_FILE}: $!\n";

print <HTML_FOODER>;

close (HTML_FOODER);

}

else {

print "</body></html>";

}

}



exit;


mfg


Tante_Horst
J-jayz-Z
 2005-04-22 11:45
#4860 #4860
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
meinst du eine normale weiterleitung auf ein anderes html Dokument?
das kannst du mit:
Code: (dl )
print "Location: http://deineurl.com\n\n";


::Edit(
Sorry, das wird bei dir nicht gehen. Deshalb:
print "Content-Type: text/html;charset=$CFG{CHARSET}\n\n";
Sorry. Aber das Modul ist trotzdem ne feine Sache.
Kleine Anleitung hier: http://www.infos24.de/perle/handbuch/25_mail.htm
)

Darf ich dir was verraten? Schau dir mal das Modul Mail::Sender an.
Damit hab ich mein Mail script geschrieben...
Ist um einiges kürzer. Ist socketbasiert....\n\n

<!--EDIT|J-jayz-Z|1114156396-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
tante_horst
 2005-04-22 11:51
#4861 #4861
User since
2005-04-22
1 Artikel
BenutzerIn
[default_avatar]
Erstmal vielen Dank für den Befehl. Werde es erstmal mit dem mir vorliegenden script testen.

Kannst Du mir noch die Stelle im Script zeigen wo ich es einfügen muss? Und muss ich evtl. aus dem bestehenden Script etwas löschen?

Wäre echt cool, wennDu das noch machen könntest!

mfg

Tante_Horst
J-jayz-Z
 2005-04-22 12:03
#4862 #4862
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Sehe ich das richtig, das du einen bereits laufenden Mailserver am start hast? Auf Linux Basis wohl. Wenn ich das richtig sehe Postfix oder Sendmail. Dieses Modul, funktioniert im Prinzip ähnlich, wie eine telnet session auf dem Port 25. Dann musst du wiederrum, wie bei der telnet session darüber relayen dürfen..
Also entweder muss dein Host auf einem entfernten Rechner als relay_host eingetragen sein oder der mailserver eben auf localhost laufen.
Hast du mein edit gesehen, das es wegen dem Content-type nicht gehen wird?
Kannst dir ja mal mein Form_mailer in der Praxis anschauen und ne mail schreiben und sehen, was er macht. Wenn du interesse hast, poste ich es dir dann:

http://j-jayz-z.de/hp/about_contact.pl
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
pq
 2005-04-22 16:02
#4863 #4863
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
bitte code-tags um deinen code herumschreiben.
Wiki:Wie frage ich bei Perl-Community.de?, insbesondere Code-Tags
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 5 Einträge, 1 Seite



View all threads created 2005-04-22 11:37.