Hallo Leute,
toll, dass es dieses Forum gibt.
hier mein problem:
im rahmen eines kleinen e-commerce projektes wird eine email aus den bestelldaten des kunden erzeugt und an meine email adresse geschickt. das klappt auch gut. das unten aufgeführte perl-script soll aber auch noch den gleichen inhalt (bestelldaten) als attachement anhängen *.osm (MS-WORD erzeugt daraus autoamtisch eine Rechnung. Vorgesehen ist die automatische filename generierung 1.osm, 2.osm … …(vermutlich aus datum/zeit). damit eine doppelter filename nicht vorkommen kann. heraus kommt immer 974.OSM (bei diesem script).
Jede Hilfe ist willkommen.
Gruß und danke schon jetzt
Rene
beginn script--------
#!/usr/bin/perl
$mailprog = „/usr/sbin/sendmail“;
$date = „/bin/date“;
&ReadParse;
&processOrder;
&print_danke;
exit(0);
sub processOrder {
$boundary = time;
@str = ();
push(@str,"| $mailprog -t");
$AuthUserFile = „/kunden/homepages/0/dXXXXXXX/htpasswd“;
foreach $str (@str) {
open(FILE, $str) || &return_failed_file_open($str);
print FILE „To: $in{‚To‘}\n“;
print FILE „From: $in{‚From‘}\n“;
print FILE „Reply-To: $in{‚From‘}\n“;
print FILE „Subject: $in{‚Subject‘}\n“;
print FILE „X-Mailer: www.mein-webshop.com E-Mail-Client Version 1.0\n“;
print FILE „MIME-Version: 1.0\n“;
print FILE „Content-Type: multipart/mixed; boundary=“_" . $boundary . „_“\n\n";
print FILE „–_“ . $boundary . „_\n“;
print FILE „Content-Type: text/plain; charset=„us-ascii“\n\n“;
print FILE „$in{‚Message‘}\n“;
print FILE „–_“ . $boundary . „_\n“;
print FILE „Content-Type: text/plain; charset=„us-ascii“\n“;
print FILE „Content-Disposition: attachment; filename=„order“ . $boundary . „.osm“\n\n“;
print FILE „$in{‚Attachment‘}\n\n\n“;
print FILE „–_“ . $boundary . „_\n“;
close(FILE);
}
}
sub print_danke {
print „Content-type: text/html\n\n“;
print qq|
$in{‚Subject‘}
Bestellung erfolgreich übertragen!
|;
}
sub return_failed_file_open {
print „Content-type: text/html\n\n“;
print „Couldn’t open file $_[0]: $!“;
exit(1); }
sub ReadParse {
if (@_) {
local (*in) = @_;
}
local ($i, $loc, $key, $val);
Read in text
if ($ENV{‚REQUEST_METHOD‘} eq „GET“) {
$in = $ENV{‚QUERY_STRING‘};
} elsif ($ENV{‚REQUEST_METHOD‘} eq „POST“) {
read(STDIN, $in, $ENV{‚CONTENT_LENGTH‘});
}
Puffern des Input
$in_buffer = $in;
@in = split(/&/,$in);
foreach $i (0 … $#in) {
Convert plus’s to spaces
$in[$i] =~ s/+/ /g;
Convert %XX from hex numbers to alphanumeric
$in[$i] =~ s/%(…)/pack(„c“,hex($1))/ge;
Split into key and value.
$loc = index($in[$i],"=");
$key = substr($in[$i],0,$loc);
$val = substr($in[$i],$loc+1);
$in{$key} .= ‚\0‘ if (defined($in{$key})); # \0 is the multiple separator
$in{$key} .= $val;
}
return 1; # just for fun
}
end script -----