Formular per E-Mail senden

Es gibt verschiedene Wege, wie du auf deiner Website ein Formular per E-Mail senden kannst. Dabei kannst du rein auf HTML und dem mailto: Befehl setzen. Du kannst ebenso einen Formmailer einsetzen.

Ich beschreibe beide Methoden in diesem Artikel und zeige dir dabei auch mögliche Vor- und Nachteile der jeweiligen Methode.

Formulare per E-Mail verschicken

In HTML kannst du auf verschiedene Art und Weise Formulare erstellen. Der modernste Weg ist derzeit, ein Formular mit HTML5 zu erstellen. Aber das beste Formular bringt nur dann etwas, wenn der Nutzer es auch absenden kann. Das kann auf divers Art und Weise erfolgen.

In diesem Artikel bringe ich dir daher zwei Methoden näher, mit denen du ein Formular absenden kannst. Möglichkeit 1 ist dabei ein simpler mailto: -Befehl, Möglichkeit 2 ein PHP Formmailer.

Formular absenden mit HTML

Der einfachste Weg ein Formular abzusenden ist mit dem HTML Befehl mailto: . Hierfür brauchst du kein Script und kein PHP. Allerdings hat diese Methode auch einen entscheidenden Nachteil. Damit es ohne jegliches Script funktioniert, muss der Anwender auf seinem Gerät ein E-Mail Programm installiert haben. Dies funktioniert nicht auf Smartphones oder Tablets, da die Apps hier in der Regel das mailto: -Protokoll nicht unterstützen.

Da immer mehr Menschen vieles direkt auf dem Smartphone oder Tablet erledigen, kann ich daher nicht zum Einsatz dieser Methode raten. Hast du aber keine andere Möglichkeit, könnte ein einfaches Formular wie folgt aussehen.

Beispiel:

<form action="mailto:deine@e-mail.de" method="post">
Name:<input type="text" name="vorname" value="" size="30" maxlength="50"><br />
Frage:<textarea name="Frage" rows="7" cols="30">Schreibe hier deine Frage hinein.</textarea><br />
<input type="submit" name="absenden" value="Absenden">
</form>

Hinweis:

Damit diese Methode funktioniert, benötigt der Nutzer ein installiertes E-Mail Programm. Diese Methode funktioniert anders als ein Formmailer. Das Formular überträgt hierbei alle Eingaben in das E-Mail Programm des Nutzers. Dieser muss danach die Mail noch händisch absenden. Eine automatische Übertragung der Eingaben findet hier nicht statt.


Anzeige:



Formular absenden mit einem PHP Formmailer

Mit PHP kommen wir nun zu der Möglichkeit, die ein direktes Versenden des Formulars erlaubt. Hierzu musst du lediglich auf deiner Website PHP Scripte ausführen können. Der Nutzer benötigt kein E-Mail Programm. Diese Methode funktioniert dabei auch auf mobilen Geräten wie Smartphones oder Tablets.

Alles, was du dazu brauchst, ist ein PHP Formmailer. Ein Beispiel für einen recht einfachen Formmailer findest du nachstehend. Gefunden habe ich dieses Beispiel im Webkompetenz-Blog.

Beispiel:

<?php
 
// ======= Konfiguration:
 
$mailTo = 'IhrName@provider.xy';
$mailFrom = '"FormMailer" <info@provider.xy>';
$mailSubject    = 'Feedback';
$returnPage = 'http://deine-website.de/formular-versendet.htm';
$returnErrorPage = 'http://deine-website.de/formular-fehler.htm';
$mailText = "";
 
// ======= Text der Mail aus den Formularfeldern erstellen:
 
// Wenn Daten mit method="post" versendet wurden:
if(isset($_POST)) { 
   // alle Formularfelder der Reihe nach durchgehen:
   foreach($_POST as $name => $value) {
      // Wenn der Feldwert aus mehreren Werten besteht:
      // (z.B. <select multiple>)
      if(is_array($value)) {
          // "Feldname:" und Zeilenumbruch dem Mailtext hinzufügen
          $mailText .= $name . ":\n";
          // alle Werte des Feldes abarbeiten
          foreach($valueArray as $entry) {
             // Einrückungsleerzeichen, Wert und Zeilenumbruch 
             // dem Mailtext hinzufügen
             $mailText .= "   " . $value . "\n";
          } // ENDE: foreach
      } // ENDE: if  
      // Wenn der Feldwert ein einzelner Feldwert ist:
      else {
          // "Feldname:", Wert und Zeilenumbruch dem Mailtext hinzufügen
          $mailText .= $name . ": " . $value . "\n";
      } // ENDE: else
   } // ENDE: foreach
} // if
 
// ======= Korrekturen vor dem Mailversand 
 
// Wenn PHP "Magic Quotes" vor Apostrophzeichen einfügt:
 if(get_magic_quotes_gpc()) {
     // eventuell eingefügte Backslashes entfernen
     $mailtext = stripslashes($mailtext);
 }
 
// ======= Mailversand
 
// Mail versenden und Versanderfolg merken
$mailSent = @mail($mailTo, $mailSubject, $mailText, "From: ".$mailFrom);
 
// ======= Return-Seite an den Browser senden
 
// Wenn der Mailversand erfolgreich war:
if($mailSent == TRUE) {
   // Seite "Formular verarbeitet" senden:
   header("Location: " . $returnPage);
}
// Wenn die Mail nicht versendet werden konnte:
else {
   // Seite "Fehler aufgetreten" senden:
   header("Location: " . $returnErrorPage);
}
 
// ======= Ende
 
exit();
 
?>

Hinweis:

Bitte passe vor dem Einsatz dieses Formmailers die Daten unter dem Punkt „Konfiguration“ an.

Damit der Formmailer funktioniert, benötigst du außerdem zwei weitere Seiten. Wenn alles in Ordnung ist, leitet das Script auf eine Seite mit einer Erfolgsmeldung um. Tritt bei der Übertragung ein Fehler auf, leitet das Script entsprechend auf eine Fehlerseite um. Diese beiden Seiten musst du noch einrichten.

Danach kannst du den Formmailer ganz einfach in deinem Formular einfügen.

Beispiel:

<form action="formmailer.php" method="post">
Name:<input type="text" name="vorname" value="" size="30" maxlength="50"><br />
Frage:<textarea name="Frage" rows="7" cols="30">Schreibe hier deine Frage hinein.</textarea><br />
<input type="submit" name="absenden" value="Absenden">
</form>

Erklärung:

Wie du sehen kannst, unterscheidet sich das Formular lediglich in der action-Methode vom vorigen Formular. In diesem Fall weist du das Formular an, die Datei formmailer.php auszuführen. Wie bereits erwähnt, braucht der Nutzer für diese Methode kein zusätzliches Programm. Auf Tablets und Smartphones funktioniert das Script ebenso.

Weitere Lesetipps

Zu Anfang des Artikels habe ich bereits den Artikel „Formulare erstellen mit HTML 5“ verlinkt. Dieser Artikel vermittelt dir einen guten Einstieg zum Erstellen von Formularen. Es gibt aber auch noch weitere Themen zu entdecken. So kannst du dir bspw. 9 Tipps zur Optimierung von Formularen ansehen.

Ebenso interessant dürfte auch der Artikel Formulare für Smartphones und Tablets optimieren sein. In diesem Beitrag zeige ich dir einige Methoden, wie du Formulare für Mobilgeräte optimieren kannst.

10 Gedanken zu “Formular per E-Mail senden”

  1. Ich möchte zu dem Formular genau wie hier im Kommentar ein DSGVO checkbox dazugeben, das Formular sollte nur gesendet werden wenn die checkbox ausgewählt wird.
    Weiters würde ich gerne eine checkbox einfügen indem eine copy am die Mail des Absenders gesendet wird.
    Die html checkboxen hab ich nur wie binde ich die funktionen in das php Dokument mit ein?

    • Hallo Stefan,
      vielen Dank für deinen Beitrag. Es wird sicherlich möglich sein, hier auch einen Honeypot einzubauen.
      Allerdings muss ich ehrlicherweise gestehen, dass ich hier nicht tiefergehend zu helfen kann.

      Viele Grüße,
      Jan

  2. Hallo, ich bin unerfahren was HTML und PHP angeht. Habe den Quellcode von oben ausprobiert, werde aber immer nur auf die Error Page weitergeleitet. Habe das Formular und den Formmailer auf einem Xampp Server hochgeladen (localhost..). Kann es sein, dass ich einen public/online Server brauche um die Form an einen EMail Server zu senden?

    • Sofern dein lokaler Server richtig konfiguriert und die URL in den Einstellungen des Scripts angepasst wurde, sollte das eigentlich keinen Unterschied machen.

      Ich vermute daher entweder eine fehlerhafte Konfiguration deines lokalen Servers (ggf. ist auch PHP nicht aktiviert), oder eben eine nicht angepasste URL im Script.

  3. Hallo ich bin neu im Webseiten Hosting usw. und habe mir deswegen diesen code rausgesucht.
    Ich dachte iegentlich das es einfach copy paste ist aber es passiert nichts wenn ich auf Absenden drücke.
    (Domain und Webspace von nitrado PHP ist aktiviert und die datei die verlinkt ist heißt genau wie datei auf meinem Webspace formmail.php habe extra die verlinkung in:
    geändert beide dateien sind im selben Verzeichnis.
    Ich habe natürlich auch das angepasst.
    $mailTo = ‚helpme@meinmailserver.de‘;
    $mailFrom = ‚“FormMailer“ ‚;
    $mailSubject = ‚Feedback‘;
    $returnPage = ‚http://meinewebseite.de/formular-versendet.html‘;
    $returnErrorPage = ‚http://meinewebseite.de/formular-fehler.html‘;
    $mailText = „“;).

    PS.: Habe PHP 7 und PHP 5.6 ausprobiert und es hat nicht Funktioniert deswegen wende ich mich jetzt an euch.

    Liebe Grüße und danke im Vorraus
    ForkBombWindows

    • Hi,

      ich habe mir das Script extra noch einmal kopiert und beide Teile ausprobiert. Bei mir funktioniert es einwandfrei.

      Ich vermute daher einfach, dass du beim Kopieren der beiden Script-Komponenten (der große Block mit der formmailer.php und der kleine Block mit dem extra Formular für eine separate Datei) bzw. beim Editieren irgendwo aus versehen einen kleinen Bestandteil gelöscht oder überschrieben hast.

    • Hallo Alexander,

      vielen Dank für deinen Hinweis. Das Hochkomma muss sich wohl irgendwann, irgendwie verdünnisiert haben… 😀

      Habe es wieder ins Beispiel mit aufgenommen. Danke dir!

Schreibe einen Kommentar