PS:kenn mich nicht besonders aus in Perl!!!!
Dann solltest du besser auf Software zurückgreifen, die du nur konfigurieren musst, ohne in den eigentlichen Programmcode eingreifen zu müssen. Immer wieder gern genannt wird der nms-mailer.
$delimiter = $query->param(': '); # ---> Begrenzerzeichen zwischen name und value
Wenn du das Trennzeichen im Script festlegen möchtest, dann brauchst du CGI->param nicht. Daneben: Du versendest eine reine Textmail, sodass die HTML-Entität " " wirkungslos bleibt. Also versendest du entweder HTML oder bleibst bei reinem Text (was ich empfehlen würde) und legst den Trenner so fest:
my $delimiter = ':';
Natürlich solltest du ihn auch verwenden :)
$returnhtml = $query->param('http://www.domain.at/formular/danke.html'); # ---> URL für Dankeseite
Hier gilt das Gleiche wie bei $delimiter:
my $returnhtml = 'http://www.domain.at/formular/danke.html';
$mailtext = "Bestellung";
foreach(@names) {
$name = $_;
@values = "";
@values = $query->param($name);
if($name ne "http://www.domain.at/formular/danke.html" && $name ne "Bestellung" && $name ne ": ") {
foreach $value (@values) {
$mailtext = $mailtext.$name;
$mailtext = $mailtext.$strasse;
$mailtext = $mailtext.$plz;
$mailtext = $mailtext.$ort;
$mailtext = $mailtext.$plz;
$mailtext = $mailtext.$bundesland;
$mailtext = $mailtext.$staat;
$mailtext = $mailtext.$vorwahl;nummer;
$mailtext = $mailtext.$email;
$mailtext = $mailtext.$kommentar;
$mailtext = $mailtext.$value."\n";
}
}
}
Das geht viel kürzer:
my $mailtext = "Bestellung\n";
foreach my $name (@names) {
$mailtext .= $name . $delimiter . [link:http://de.selfhtml.org/perl/funktionen/kontrolle.htm#quotemeta@title=quotemeta]($query->param($name)). "\n";
}
-------> E-Mail versenden:
open(MAIL,"|$Sendmail_Prog -t") || print STDERR "Mailprogramm konnte nicht gestartet werden\n";
print MAIL "To: $mailto\n";
print MAIL "Subject: $subject\n\n";
Bitte nie eine Angabe zum Absender vergessen, es könnte sonst Probleme mit entsprechend sicher konfigurierten Mailservern geben. Ebenso nicht den verwendeten Zeichensatz vergessen anzugeben. Eine vollständige Ausgabe sähe dann so aus (Heredoc-Syntax):
print MAIL <<MAILTEXT;
To: $mailto
From: $mailfrom
Subject: $subject
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
$mailtext
MAILTEXT
close MAIL;
und hier das html doc:
<input type="hidden" name="delimiter" value=": ">
<input type="hidden" name="subject" value="Bestellung">
Die zwei kannst du rausschmeißen.
Siechfred
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.