Inhalt eines Formulars als E-Mail schicken

Hi,

ich habe foldenden Code auf meiner Seite:

Name:
Strasse:
PLZ/Ort:
Telefon 1:
Telefon 2:
E-Mail:
Personen:
Kommentar:
Datum 1:
Datum 2:

Was ich nun will, ist, dass wenn jemand auf den Button unten klickt, dass eine Mail mit dem Inhalt des forms an meine Mailadresse geschickt wird.
Dies sollte (wie man sieht) am besten mit PHP geschehen - die php-Datei irgenwas.php existiert noch nicht.

Kann mir jemand sagen, wie die Datei aussehen sollte?

Vielen Dank im Voraus

–WhiteAvenger

Was ich nun will, ist, dass wenn jemand auf den Button unten
klickt, dass eine Mail mit dem Inhalt des forms an meine
Mailadresse geschickt wird.
Dies sollte (wie man sieht) am besten mit PHP geschehen - die
php-Datei irgenwas.php existiert noch nicht.

Lies dir mal http://www.php.net/manual/de/function.mail.php durch.

Danke,

die mail-Funktion hatte ich auch schon entdeckt. Was ich gerne wissen würde, ist wie ich die Inhalte des Formulars in PHP-Variablen bekomme, damit ich sie mit der mail-Funktion verschicken kann!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ungetestet:

<?php $mailtext = "";<br />foreach($\_POST as $name=\>$value)
 $mailtext .= strip\_tags($name) . ":" . strip\_tags($value) . "\n";
mail("[email protected]", "Betreffzeile",$mailtext);
Header("Location: http://example.com/verschickt.html");
?\>

Ein ppar Sicherheitshinweise:

  • Schreibe den Empfänger auf keinen Fall mit ins Formular, sondern nur in die PHP Datei
  • Wenn du HTML in den Formularen als Eingabe erlauben willst, musst du die strip_tags-Funktion weglassen. Allerdings könnte dir dann jemand „bösen“ Code einschleusen, der je nach deinem Mailprogramm angezeigt / ausgeführt wird
  • Willst du den Absender auf die eingegebene Mailadresse setzen, oder den Betreff aus der Eingabe zusammenbauen, musst du die eingegebenen Daten vorher detailliert prüfen, damit keiner das Formular zum Spam versenden nutzen kann, also besser nicht machen…

Alex

ungetestet:

<?php :blush:mailtext = "";
foreach($\_POST as $name=\>$value) $mailtext .= strip\_tags($name) . ":" . strip\_tags($value) . "\n"; mail("[email protected]", "Betreffzeile",$mailtext); Header("Location: http://example.com/verschickt.html"); ?\>

Danke Alex,

das funktioniert schon fast, wie ich es will.
Im Moment habe ich alle Namen der „Inputs“ im Formular so geändert, dass sich die E-Mail recht normal liest: „Daytime_telephone_no: xxxx“.
Ich würde aber nun gerne innerhalb der for-Schleife überprüfen, was der Name des Inputs ist, und je nach Name einen anderen Text ausgeben, sodass ich die Namen der Inputs im HTML-Dokument wieder vernünftig gestalten und vor allem die unnötige Information „Submit: Send“ am Ende der e-mail unterbinden kann.

Wenn das ginge, wäre ich restlos glücklich!

–WhiteAvenger

Du kannst auch die einzelnen Werte einfach nur mit

$_POST[namedervariable]
aufrufen…

Also zum Beispiel:

$textzumversenden = „Name: $_POST[name]
Datum: $_POST[datum]“;

Sowas mache ich meistens mit assoziativen Arrays, weil das schön einfach geht.
beispiel (ungetestet):

$keytranslate=array(
‚daytime_number‘ => ‚Telefon tagsueber‘,
‚…‘ => ‚…‘
);

foreach($_POST as $key=$value)
{
if (isset($keytranslate[$key]))
$key = $keytranslate[$key];
$mailtext .= „$key: $value\n“;
}

Etwas abgewandelt kannst du diesen Code auch dafür benutzen, nur ausgewählte Formularfelder zu mailen: Einfach die if-Anweisung durch folgendes Ersetzen:
if (!isset($keytranslate[$key]))
continue;
$key = $keytranslate[$key];

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]