Formulardaten - Mailkopie an Besucher - Haut nich hin
Markus
- cgi
Hallo Community,
ich brauche dringend eure Hilfe.
Habe ein kleines altes aber dennoch brauchbares Shopscript in Verwendung. Der Programmierer dieses Scripts ist nicht mehr erreichbar bzw. er arbeitet schon seit langem nicht mehr dran.
Das Problem!
Wenn ein Kunde eine Bestellung abschicken möchte, füllt er ein Formular aus mit allen Daten die ich für die Auftragsabwicklung benötige.
Ich erhalte eine anständig formatierte E-Mail mit allen Bestellangaben.
Der Kunde erhält leider nichts.
Und genau hier liegt mein Problem.
Der Kunde soll auch eine Bestellbestätigung erhalten, vorzugsweise eine, die auf vordefinierten z.B. .txt-Templates basiert in denen Platzhalter für die Variablen eingebaut sind.
Ich wäre aber auch schon zufrieden, wenn er nur eine einfache Kopie erhält.
Zurzeit schreibe ich jedem Kunden eine mit Outlook - jaja, lacht nur.
Ich habe schon alles versucht, habe diverse Mailscripte auseinandergepflügt und versucht in das bestehende zu integrieren, leider alles vergeblich.
Ich muss zu meinem Nachteil gestehen, dass ich nicht die "Leuchte" in CGI bin.
Das ganze Shopscript ist aus mehreren Dateien verteilt, der für den Bestellvorgang (Mailversand) relevante Teil folgt hier.
Wenn die Geschichte aufwendiger ist, dann bin ich auch für ein Angebot offen.
#--- Modul................: CartOrder.pm
#--- Information..........: http://www.franken.de/users/bessie/projekte/eshop/
package CartOrder;
use CartData;
use CartUsers;
use ShopConfig;
sub ExecOrder {
my $user = shift;
my $q = shift;
#############################################################################
#&ReadParse;
$kndmail = $in{'EMail'};
sub ReadParse { local (*in) = @_ if @_;
local ($i, $key, $val);
if ( $ENV{'REQUEST_METHOD'} eq "GET" )
{$in = $ENV{'QUERY_STRING'};}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
}
else {
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\&/&/g; } @in = split(/&/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val;
}
return length($in);
}
#############################################################################
if (!open(MAIL, "| " . $ShopConfig::MISC{'sendmail'} . " -t")) {
require ShopError;
&ShopError::CouldntExec($ShopConfig::MISC{'sendmail'});
}
print MAIL "X-Mailer: tagebuch-center.de" . "\n";
print MAIL "To: " . $ShopConfig::MISC{'toaddr'} . "\n";
print MAIL "From: " . $ShopConfig::MISC{'fromaddr'} . "\n";
print MAIL "Subject: Tagebuch-Center Online Bestellung\n";
print MAIL "\r\n";
print MAIL "Online Bestellung Tagebuch Center:\r";
print MAIL "-" x 72 , "\r";
my $cartent = {};
my $endprice = 0;
my $fmtline = " %10s | %30s | %11.2f | %11.2f \r";
printf MAIL " %10s | %30s | %11s | %10s \r", "Menge", "Bestellnummer", "Einzelpreis", "Gesamtpreis";
print MAIL "-" x 12, "|" , "-" x 32, "|", "-" x 13 , "|", "-" x 12 , "\r";
my $cartdata = new CartData(1);
$cartdata->UserInit($user->{uid});
while($cartent = $cartdata->UserNext()) {
if ($cartent->{status} eq "N") {
if ($cartent->{amount} > 0) {
printf MAIL $fmtline, $cartent->{amount},
$cartent->{orderinfo},
$cartent->{singleprice},
$cartent->{amount} * $cartent->{singleprice};
if ($ShopConfig::MISC{'printdesc'}) {
my $description = $cartent->{description} . " ";
my $line = "";
while ($description =~ s/^(.{1,30})\s//) {
my $line = $1;
unless ($line =~ /^\s*$/) {
print MAIL " " x 12, "| ", $line;
print MAIL " " x (31-length($line)), "|";
print MAIL " " x 13, "|", " " x 12, "\r";
}
}
print MAIL "-" x 12, "|" , "-" x 32, "|", "-" x 13 ,
"|", "-" x 12 , "\r";
}
$endprice += $cartent->{amount} * $cartent->{singleprice};
}
$cartent->{status} = 'O';
$cartdata->EntryChange($cartent);
}
}
undef $cartdata;
if (!$ShopConfig::MISC{'printdesc'}) {
print MAIL "-" x 12, "|" , "-" x 32, "|", "-" x 13 , "|", "-" x 12 , "\r";
}
printf MAIL "%58s | %11.2f \r", "Zwischensumme", $endprice;
print MAIL "-" x 59, "|", "-" x 12, "\r";
$vers = "4.90";
printf MAIL "%58s | %11.2f \r", "Versand", $vers;
print MAIL "-" x 59, "|", "-" x 12, "\r";
$gesamt = $endprice + $vers;
printf MAIL "%58s | %11.2f \r", "enthaltene MwSt.", $gesamt/"100"*16;
print MAIL "-" x 59, "|", "-" x 12, "\r";
printf MAIL "%58s | %11.2f \r", "Gesamt", $gesamt;
print MAIL "-" x 59, "|", "-" x 12, "\r";
print MAIL "\r\n\r\n";
print MAIL "Persoenliche Daten:\r";
print MAIL "-" x 72, "\r";
$fmtline = "%20s : %s\r";
my $paramname = "";
printf MAIL $fmtline, "Useragent", $user->{browser} if ($user->{browser});
printf MAIL $fmtline, "Kundennummer", $user->{kndnr} if ($user->{kndnr});
foreach $paramname ( $q->param() ) {
if (($paramname !~ /^_/) && ($paramname ne "action")) {
my $value = $q->param($paramname);
printf MAIL $fmtline, $paramname, $value, "\r";
}
}
print MAIL "\r-- \r";
close(MAIL);
}
1;
Sollten mehr Infos nötig sein einfach Schreiben an info@dbrv.de (Der Shop läuft nicht dort)
Besten Dank für eure Aufmerksamkeit.
Viele Grüße
Markus