Siechfred: FormMailer mit perl

Beitrag lesen

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=":&nbsp;">
<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.