Antworten auf deine Fragen:
Neues Thema erstellen

HTML/PHP MAIL versenden

Hallo,

ich versuche derzeit ein HTML Kontaktformular bzw die Inhalte davon mittels php mail() function zu versenden. Hänge aber gerade und bitte euch um Hilfe.

Wie kann ich z.B. dein eingegebenen Text und die Email Adresse das im Kontaktformular angegeben wurde mittels PHP versenden ?


So sieht mein Code derzeit aus und es funktioniert .. Nur weiss ich leider nicht wie ich die eingegebenen Daten übernehme und diese mit verschicke..


HTML:
          <form class="" action="senden.php" method="post">
            <div class="">
              <label>Name</label>
              <input type="text" name="von" placeholder="Bitte geben Sie Ihren Namen ein" value="">
              <label>E-Mail Adresse</label>
              <input type="text" name="email" placeholder="Bitte geben Sie Ihre Email-Adresse ein" value="">
              <label>Telefonnummer</label>
              <input type="tel" name="tel" placeholder="Bitte geben Sie Ihre Telefonnummer ein" value="">
            </div>
            <div class="">
              <label>Nachricht</label>
              <textarea placeholder="Bitte geben Sie Ihre Nachricht ein" name="nachricht" rows="8" cols="40"></textarea>
              <button type="submit" name="submit" value="">Nachricht Abschicken</button>
            </div>

          </form>




PHP:
     <?php
          $empfaenger = "meinemail@gmail.com";
          $betreff = "Die Mail-Funktion";
          $from = "From: Mustermann <absender@domain.de>";
          $text = "Email Text Inhalt";

          mail($empfaenger, $betreff, $text, $from);
?>



Würde mich über eure Hilfe freuen.

Lg
 
Zuletzt bearbeitet:

owieortho

Aktives Mitglied

Moin,
Deine Variablen aus dem Formular liest Du mit einem "$_REQUEST[name des Formularfeldes]" aus und weist ihn einer entsprechenden Variablen zu:
Code:
$name = $_REQUEST["von"];
$email = $_REQUEST["email"];
$tel = $_REQUEST["tel"];
$text = $_REQUEST["nachricht"];
Du könntest natürlich auch den Betreff per Formular abfragen. Weiter geht es dann in Deiner senden.php mit.
Code:
...
$from = "From: ". $name ." <". $email .">";
...
Da ist natürlich noch nichts validiert, was aber aus Sicherheitsgründen immer stattfinden sollte.
Viel Erfolg
O.
 
Hallo @owiertho,

danke für deine Antwort.

Mein Mail wird zwar jetzt abgeschickt aber der Absender wird nicht angezeigt komischerweise...



FORMULAR (HTML)
HTML:
    <div class="container kontaktformular">
      <h1>JETZT ANGEBOT EINHOLEN</h1>
      <form class="" action="index.php?=mail_anfrage" method="post">

      <input type="text" id="name" name="vname" placeholder="NAME"><br><br>

      <input type="email" id="email" name="email" placeholder="E-MAIL ADRESSE"><br><br>

      <input type="number" id="tel" name="telefon" placeholder="TELEFON - BITTE NUR ZIFFERN EINGEBEN"><br><br>

      <input type="date" id="tel" name="date" placeholder="DATUM"><br><br>

      <textarea placeholder="Nachricht" rows="4" cols="40">
      </textarea>

      <input class="form_button" type="submit" id="submit" name="email" value="ANGEBOT EINHOLEN"><br>

    </form>

    </div>



PHP:
       <?php
             $name = $_REQUEST["vname"];
             $email = $_REQUEST["email"];
             $tel = $_REQUEST["tel"];
             $text = $_REQUEST["nachricht"];
             $datum = $_REQUEST["date"];
             $empfaenger = "meinmail@gmail.com";
             $betreff = "Email von ......";
             $from = "From: ". $name ." <". $email .">";
             $text = "Umzugsanfrage: ". $text;


            mail($empfaenger, $betreff, $text, $from, $datum);
  ?>





P.S. WIE KANN ICH weitere Felder mit abschicken ? habe $datum eingefügt um es mitzuschicken auch dies wird nicht mitgeschickt
 
Zuletzt bearbeitet:

owieortho

Aktives Mitglied

Habe über das Wochenende wenig Zeit, kann also etwas dauern mit den Antworten...

FORMULAR (HTML)
HTML:
 ...
      <form class="" action="index.php?=mail_anfrage" method="post">
....
Das kenne ich so nicht. In zweierlei Hinsicht:
Die Übergabe von Parameter-Werte-Paaren erfolgt nach folgendem Schema:
datei.ext?Parameter1=Wert&Parameter2=Wert usw.
Bei Dir fehlt da also der Parameter zum Wert "mail_anfrage"
Diese Werteübergabe wird mit der method="get" ausgewertet. Ich bin mir nicht sicher, ob das mit post dann verarbeitet wird.

HTML:
 ...
      <input type="number" id="tel" name="telefon" placeholder="TELEFON - BITTE NUR ZIFFERN EINGEBEN"><br><br>
      <input type="date" id="tel" name="date" placeholder="DATUM"><br><br>
...
Ein Attributwert von id darf auf einer HTML-Ausgabe nur ein einziges mal vorkommen, Für mehrfachen EInsatz muss class genommen werden.

PHP:
       <?php...
             $text = $_REQUEST["nachricht"];
             $datum = $_REQUEST["date"];
             $empfaenger = "meinmail@gmail.com";
             $betreff = "Email von ......";
             $from = "From: ". $name ." <". $email .">";
....
            mail($empfaenger, $betreff, $text, $from, $datum);
  ?>

Ich vermute, Du möchtest im Betreff eine Angabe, die ungefähr so aussieht haben:
Email von Max Mustermann <max.mustermann@mailprovider.tld>
Ganz egal ob Du die Variable $betreff, $subject, $worum_es_geht oder anderweitig nennst, die mail-Funktion erwartet dies an zweiter Stelle in seiner Klammer. Oder anders gesagt: alles, was an zweiter Stelle steht, wird der Betreff. Du müsstest also Deine Variable $from nehmen und deren Text etwas anpassen.

Weitere Felder müssen unterschieden werden zwischen mail-relevanten (cc, bcc, reply-to, ...) und individuellen (in deinem Beispiel $tel). Die gehört in Deinem $text verarbeitet. Für jede gewünschte Felderfassung und -übergabe also immer im HTML-Formular ein Element mit gewünschten Namen anlegen und diesen Namen dann mit $_REQUEST["name"]; auslesen und dann so wie bei $from den Text konstruieren.

Hoffe, das hilft Dir weiter. Hilfreiche Anmerkung in einem anderen Post zu einem ähnlichen Thema:
...
Fange mit einer einfachen Text-E-Mail an und arbeite Dich Schritt für Schritt zumg ewünschten Ziel.
Ansonsten natürlich immer gern auch zur Quelle:
http://php.net/manual/de/function.mail.php

Viel Erfolg
O.
 

Curanai

Aktives Mitglied

Moinsen und frohe Pfingsten.

Soweit ich mich recht entsinnen kann, wird das übergebene Array der superglobalen $_REQUEST mit den Attribut-"Namen" aus dem Formular ausgestattet - nicht mit seinen IDs. Das fällt bspw. bei $_REQUEST['tel'] auf - das müsste doch eigentlich $_REQUEST['telefon'] sein, gell?

Wenn etwas vermeintlich nicht präsent ist nach einer Übergabe/einem Versand, hilft immer:
Code:
print_r($_REQUEST);

Tipps:
  • Form-Tag: Ergänze noch den accepted-charset für Dein Form – hoffentlich ist das "utf-8" (wie alles andere auch). ;)
  • GET im Form-Action: Wenn korrekt als Key-Value-Parameter angegeben, funktioniert das problemlos – aber untypisch.
  • F5/STRG + R etc.: Vergiss den Hashwert nicht, dass Dein Formular nur 1x abgeschickt werden kann – jedes F5 ärgert den Empfänger (dann bekommst nicht eine E-Mail, sondern mind. 20 mit gleichem Inhalt)!
  • IDs im Form: Wenn Du die nicht für CSS bzw. JavaScript benötigst, sind diese optional.
  • Initialisiere bitte bei Eingabefeldern das Attribut "value" – das ist zwar immer "leer", aber bitte initialisieren (solltest Du auf jQuery mal erweitern, wirst Du es verstehen)!
  • Ein "trim($_REQUEST['nachricht']);" wäre noch zu überlegen :D
  • mail in PHP hat diese Syntax: mail($an , $betreff , $nachricht [, $header [, $parameter ]] ); $header-Angaben sind als solche zu machen; $parameter sind ergänzende Informationen an die Konfiguration des Mail-Versenders (schau Dir auf der von owieortho verlinkten Seite zu mail() das Beispiel #2 an - das sorgt für Aha-Effekte!); da hat der owieortho also sowas von recht bzgl. "so eben nicht". :D Eines noch: solltest Du Dir einen XAMPP installiert haben für den Bau, so wirst Du keine E-Mail erhalten, da mail() nicht konfiguriert ist (quasi ein Pseudo-Mailer; hier hilft auch Dir der Einsatz von phpmailer).
  • Je nach Schwerpunkt Deines Formulares sollte E-Mail oder Telefon Pflichtfeld werden (geht ja schließlich um vorzulegende Angebote).
  • wenn Dein Formular öffentlich ist, könntest Du noch einen Mini-Cheat gegen nervige Bots einbauen: ein hidden-Input Feld mit eigenem Namen; diese Automationen befüllen grundsätzlich alles in einem Formular - ergo könntest Du serverseitig abfangen, ob die Anfrage von einem Bot kommt und diese E-Mail schon gar nicht mehr zustellen (denn ein User füllt unsichtbare Felder nicht aus). ;)

Theoretisch könntest Du bei Dir sowas einbauen, aber dann hast Du auch Deinen GET-Parameter aus der Form-Action mit dabei:
Code:
<?php 
$mitteilung = "";
foreach ($_REQUEST as $idx => $val) {
  $mitteilung .= $idx . ": " . $val . "\n";
}
// Versand von Mitteilung in mail()
?>

Persönlich mag ich die Verwendung von $_POST und $_GET deutlich lieber – da eben differenziert und nicht alles unter $_REQUEST vereint. Aber das ist – wie vieles – einfach nur Geschmackssache. ;)

Viel Erfolg.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.613
Beiträge
1.538.346
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben