alex: Sendmail aber als in html formatierte mail?!

Beitrag lesen

Hallo!
Würde Formulardaten gerne etwas "ansprechender" versenden, als eine einfache Liste wie

Name: Peter
Stadt: Berlin
email: a@b.c
.
.
.

So funktioniert das schon in meinem Skript.
Problem ist nur, dass nicht alle Variablen einzeln aufgelistet werden, sondern automatisch immer die nächste in eine neue Zeile...
Dazu müßte ich dann doch wahrscheinlich jede Variable extra schreiben, so wie ich  mir das vorstelle, oder?

Folgendes Skript funktioniert bei mir schon wunderbar(eine mail an mich und eine zur Bestätigung an den Absender):

#!/usr/bin/perl

-------> SMTP-Programm zum Versenden der Mail:

$Sendmail_Prog = "/usr/lib/sendmail";

-------> Modul für CGI-Scripts einbinden:

use CGI;

-------> Modul für CGI-Scripts zum Einlesen der Formulardaten anwenden:

$query = new CGI;
@names = $query->param;

MAIL AN MICH

-------> interne Daten aus den erwarteten hidden-Feldern auslesen:

$delimiter = $query->param('delimiter');  # ---> Begrenzerzeichen zwischen name und value
$mailto = $query->param('mailto');        # ---> Empfängeradresse
$returnhtml = $query->param('return');    # ---> URL für Dankeseite
$subject = $query->param('subject');      # ---> E-Mail-Subject

-------> Text der E-Mail aus den Formulardaten ermitteln:

my $mailtext = "Aufgegebene Bestellung:\n\n";
$mailtext .= "IP des Bestellers: $ENV{'REMOTE_ADDR'}\n";
foreach(@names) {
  $name = $_;
  @values = "";
  @values = $query->param($name);
  if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
    foreach $value (@values) {
      $mailtext = $mailtext.$name;
      $mailtext = $mailtext.$delimiter;
      $mailtext = $mailtext.$value."\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";
print MAIL "$mailtext\n";
close(MAIL);

BESTAETIGUNGSMAIL

-------> interne Daten aus den erwarteten hidden-Feldern auslesen:

$delimiter = $query->param('delimiter');  # ---> Begrenzerzeichen zwischen name und value
$mailto = $query->param('email');        # ---> Empfängeradresse
$returnhtml = $query->param('return');    # ---> URL für Dankeseite
$subject = $query->param('subject');      # ---> E-Mail-Subject

-------> Text der E-Mail aus den Formulardaten ermitteln:

my $mailtext = "Aufgegebene Bestellung:\n\n";
$mailtext .= "IP des Bestellers: $ENV{'REMOTE_ADDR'}\n";
foreach(@names) {
  $name = $_;
  @values = "";
  @values = $query->param($name);
  if($name ne "mailto" && $name ne "return" && $name ne "subject" && $name ne "delimiter") {
    foreach $value (@values) {
      $mailtext = $mailtext.$name;
      $mailtext = $mailtext.$delimiter;
      $mailtext = $mailtext.$value."\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";
print MAIL "$mailtext\n";
close(MAIL);

-------> Dankeseite an Browser senden:

print "Location: $returnhtml\n\n";

So, ist das so überhaupt OK? Hab einfach den Teil der die email verarbeitet kpl. kopiert und nur die Variable maito(fester Wert im Formular) mit der Variable email(wird eingegeben) vertauscht, jedenfalls funktioniert es so:-)
Nur wie bekomme ich es jetzt hin, dass der mailtext in html formatiert werden kann?
So wie das hier gemacht ist, geht das ja nur mit einer Liste, ich würde diese Liste gerne in mehrere Bereiche aufteilen, muß ich dann alle Variablen einzeln in den mailtext schreiben?
Kann man hier nicht auch sowas machen, wie der Print Befehl mit EOF bei normalen html Seiten? Wie bekomme ich das dann in die mailtext-Variable???

Wäre für ein paar Hinweise sehr dankbar!

Nur kurz am Achluss noch, hat es überhaupt Sinn meiltext in html zu formatieren, eigentlich kann das doch jeder lesen, vielleicht außer das T-Online... aber da ist die Seite auch als Formular angehängt, was meint Ihr dazu?

Gruß
Alex

PS: Wie kann ich eigentlich eine andere Absenderadresse einfügen, so dass derjenige der die Bestätigung erhält auch direkt an diese Adresse antworten kann?