• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kleines Kontaktformular

Fabhino22Elz

Neues Mitglied
Hallo,

ich habe ein Kontaktformular gefunden welches ich in unsere Homepage eingebaut habe:

www.genius-germany.de/kontakt.html

Dieses Script funktioniert auch.

Jedoch möchte ich noch ein Dropdown im Formular haben, durch welches ein Empfänger gewählt werden kann.

Kann mir da jemand helfen?

Hier das PHP Formular:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Nachricht gesendet</title>
</head>

<body style="background-color: #808080">
<?PHP

if ($_POST[message]) {

// hier findet man die mail Zeile mit der Adresse an die der Inhalt des Formular gesendet wird.
   mail("[email protected]","$_POST[title] - Nachricht gesendet von $_POST[firstname] $_POST[lastname]","Name: $_POST[firstname] $_POST[lastname]<br>Telefon: $_POST[telephone] <br>Email: $_POST[email] <br>Betreff: $_POST[title]<br> $_POST[message]");

// hier findet man schreibt man die Ausgabemeldungen die der Benutzer nach dem senden der Mail in seinem Browser angezeigt werden.    
    echo "Danke für ihre Angaben!<br>";

    echo "Ihre Nachricht wurde erfolgreich übermittelt:<br>";
    echo "Vorname: $_POST[firstname]<br>";
    echo "Nachname: $_POST[lastname]<br>";
    echo "Telefonnummer: $_POST[telephone]<br>";
    echo "Email: $_POST[email]<br>";
    echo "Betreff: $_POST[title]<br>";
    echo "Nachricht: $_POST[message]<br>";     
    echo "Wir werden uns umgehend mit Ihnen in Verbindung setzen<br>";

} else {

// hier findet die Fehlerbehandlung statt, falls das Formular nicht korrekt gesendet werden konnte. Meldung ausgeben usw...
   echo "Fehler bei der Übermittlung ihrer Angaben, wenden sie sich bitte per Email an [email protected]<br>";
   
}

?>

</body>
</html>

Hier das Kontaktformular:

PHP:
                            <form method="post" action="php/formular.php">
                                <p>
                                    <label for="name">Vorname:</label><br/>
                                    <input type="text" name="firstname" value="" id="firstname" />
                                </p>
                                <p>
                                    <label for="name">Nachname:</label><br/>
                                    <input type="text" name="lastname" value="" id="lastname" />
                                </p>
                                <p>
                                    <label for="name">Telefonnummer:</label><br/>
                                    <input type="text" name="telephone" value="" id="telephone" />
                                </p>
                                <p>
                                    <label for="email">E-Mail:</label><br/>
                                    <input type="text" name="email" value="" id="email" />
                                </p>
                                <p>
                                    <label for="title">Betreff:</label><br/>
                                    <input type="text" name="title" value="" id="title" />
                                </p>
                                <p>
                                    <label for="message">Ihre Nachricht:</label><br/>
                                    <textarea  name="message" value="Your Message" id="message" ></textarea>
                                </p>
                                <p>
                                    <input type="submit" name="submit" value="Nachricht senden" />
                                </p>
                            </form>

Hoffe mir kann jemand helfen.
 
Werbung:
Wie Du schon sagst: du müsstest nur ein Dropdown-Feld in Form eines <select>-Elements ergänzen. Darin wiederum pro Empfänger ein <option>-Element mit einem value-Wert wie z.B. 1, 2, 3,4 usw. Bei der Verarbeitung müsstest Du dann auf diese Werte zugreifen und könntest per switch() entscheiden, welche Empfängeradresse hinter der Zahl steht.

PHP:
switch($_POST["empfaenger"]) {
 case "1":
  $empfaenger = "[email protected]";
  break;
}

Dann musst Du natürlich in der mail()-Funktion noch den Empfänger austauschen. Also statt deiner Mail-Adresse die Variable $empfaenger ergänzen.

Wichtig:
Die php mail()-Funktion sollte man nicht nutzen. Schau dir bitte mal den phpmailer an.

Und:
Die o.g. Beschreibung ist nur die Kurzfassung. Eigentlich musst Du das Formular noch erheblich absichern, z.B. niemals direkt auf $_POST-Variablen zugreifen um irgendwas zu ermitteln (wie in meinem Beispiel im switch() oben).
 
Danke für deine Antwort.

Das Dropdownfeld habe ich nun eingebaut.

Nun jedoch die Frage - Was ist phpmailer? Ist das auch eine einfache PHP Datei oder ein komplexes Script. Wir wollen auf der Seite ja eine einfache Umsetzung. Was würdest du dafür empfehlen?

Grüße
 
Werbung:
Hi,

danke, aber das wirkt im ersten Moment ohne PHP Kenntnisse ziemlich heavy.

Habe die Version 5.2.2 geladen.

Was ich mittlerweile verstanden habe ist das ich die Datei "class.phpmailer.php auf den Webspace kopieren muss. Das habe ich getan.

Außerdem habe ich aus dem examples Ordner die Datei test_mail_basic.php auf den webspace kopiert und in mail.php umbenannt. Diese liegen im Ordner php. Die contact.html sendet das Formular mit folgendem befehl an die Datei mail.php

<form method="post" action="php/formular.php">

Diese sendet auch die Demomail aus der contents.html - AAAABER - Wie bekomme ich nun die Variablen aus dem Formular dann übergeben?

Grüße
 
Zuletzt bearbeitet:
Hallo,

mittlerweile funktioniert das versenden der Emails samt inhalt.

Lediglich 3 Probleme habe ich noch.

1. Ich habe ja ein Dropdown über das Kunden die entsprechende Abteilung wählen könne / sollen. Wie kann ich es machen das dieses eben dann auch an die richtige Email gesendet wird? Du hats mir da zwar oben etwas geschrieben, aber wie ist es mit Option 2, 3, 4 usw.?

2. Wie kann ich den HTML Emails versenden?

3. Wie kann ich überprüfen lassen das Felder nicht gefüllt sind?

Hoffe ihr könnt mir helfen.

Grüße
 
Werbung:
Hallo.

1. Erstmal musst du ein Drop-Down Menü in HTML einbauen. Das geht mit <select></select>. Dazwischen kommen dann die Optionen: <option value="1"></option>. Bei Value kannst du irgendetwas hinschreiben, sollte aber etwas selbsterklärendes sein. Dann gehts du wie folgt vor:

PHP:
<?php
$empfänger = $_POST["empfänger"];
?>

Und dann als Empfänger in das E-Mail Skript die Variable $empfänger als Empfänger festlegen.

2. Die mail() Funktion solltest du nicht nutzen. Um HTML-E-Mails zu verschicken, musst du den Inhalt deklarieren und dann kannst du jeden beliebigen HTML-Tag einsetzen.

3. Einfache Überprüfung, ob das Feld "Vorname" leer ist:

PHP:
<?php
$vorname = $_POST["vorname"];
if($vorname == "")
{
echo "Das Feld Vorname ist leer.";
}
else
{
...weitere PHP-Anweisungen...
}
?>

MfG
 
Hallo.

1. Erstmal musst du ein Drop-Down Menü in HTML einbauen. Das geht mit <select></select>. Dazwischen kommen dann die Optionen: <option value="1"></option>. Bei Value kannst du irgendetwas hinschreiben, sollte aber etwas selbsterklärendes sein. Dann gehts du wie folgt vor:

PHP:
<?php
$empfänger = $_POST["empfänger"];
?>

Und dann als Empfänger in das E-Mail Skript die Variable $empfänger als Empfänger festlegen.

2. Die mail() Funktion solltest du nicht nutzen. Um HTML-E-Mails zu verschicken, musst du den Inhalt deklarieren und dann kannst du jeden beliebigen HTML-Tag einsetzen.

3. Einfache Überprüfung, ob das Feld "Vorname" leer ist:

PHP:
<?php
$vorname = $_POST["vorname"];
if($vorname == "")
{
echo "Das Feld Vorname ist leer.";
}
else
{
...weitere PHP-Anweisungen...
}
?>

MfG

Danke für die Antwort.

Das Dropdown habe ich eingefügt.

HTML:
                        <div class="contact_form">
                            <h1>Schreiben Sie uns eine Nachricht!</h1>
                            <form method="post" action="mail.php">
                                <p>
                                    <label for="section">Abteilung</label><br/>
                                    <select name="section" id="section">
                                        <option value="1">Allgemeine Anfrage</option>
                                        <option value="2">Service Reklamation</option>
                                        <option value="3">Marketing</option>
                                        <option value="4">Verkauf Deutschland</option>
                                        <option value="5">Verkauf International</option>
                                        <option value="6">Buchhaltung</option>
                                    </select>
                                </p>
                                <p>
                                    <label for="firstname">Vorname:</label><br/>
                                    <input type="text" name="firstname" value="" id="firstname" />
                                </p>
                                <p>
                                    <label for="lastname">Nachname:</label><br/>
                                    <input type="text" name="lastname" value="" id="lastname" />
                                </p>
                                <p>
                                    <label for="telephone">Telefonnummer:</label><br/>
                                    <input type="text" name="telephone" value="" id="telephone" />
                                </p>
                                <p>
                                    <label for="email">E-Mail:</label><br/>
                                    <input type="text" name="email" value="" id="email" />
                                </p>
                                <p>
                                    <label for="title">Betreff:</label><br/>
                                    <input type="text" name="title" value="" id="title" />
                                </p>
                                <p>
                                    <label for="message">Ihre Nachricht:</label><br/>
                                    <textarea  name="message" value="Your Message" id="message" ></textarea>
                                </p>
                                <p>
                                    <input type="submit" name="submit" value="Nachricht senden" />
                                </p>
                            </form>
                        </div>

Nun aber die Frage - Wie bekomme ich diese im Dropdown übersetzt? Da verstehe ich deinen Ansatz leider nicht so genau. Sorry, in PHP kenne ich mich leider nahezu 0 aus :-(

PHP:
<?php

require_once('class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"

$mail->SetFrom($email, "$firstname $lastname");

$mail->AddReplyTo($email,"$firstname $lastname");

$address = ($email);
$mail->AddAddress("[email protected]", "Thomas Stahl");

$mail->Subject    = "$title";

$body             = ("$firstname $lastname $email $telephone $message");

$mail->AltBody    = "$firstname $lastname $email $telephone $message"; // optional, comment out and test

$mail->MsgHTML($body);

if(!$mail->Send()) {
  echo include ("error.html");
} else {
  echo include ("success.html");
}

?>

Grüße

Thomas
 
Machen wir mal wieder etwas Grundlagenschulung: :?
PHP:
<?php
switch ($_POST['section'])
{
   case 1:  $section = "Allgemeine Anfrage"; break;
   case 2:  $section = "Service Reklamation"; break;
   case 3:  $section = "Marketing"; break;
   case 4:  $section = "Verkauf Deutschland"; break;
   case 5:  $section = "Verkauf International"; break;
   case 6:  $section = "Buchhaltung"; break;
   default: $section = "Allgemeine Anfrage"; break;
}
?>
 
Werbung:
Dein Drop Down Menü heist ja "section".

Folgendes:

PHP:
<?php
$section = $_POST["section"];
if($section == "1")
   {
   $empfänger = "E-Mail Adresse";
   }
else
   {
   if($section == "2")
      {
      $empfänger = "E-Mail Adresse";
      }
   else
      {
      if($section == "3")
         {
         $empfänger = "E-Mail Adresse";
         }
      else
         {
         if($section == "4")
            {
         $empfänger = "E-Mail Adresse";
            }
         else
            {
            if($section == "5")
               {
               $empfänger = "E-Mail Adresse";
               }
            else
               {
               $empfänger = "E-Mail Adresse";
               }
            }
         }
      }
   }
?>

Mit der If-Bedingung wird abgefragt, welche E-Mail Adresse du haben willst. Du musst deine Adressen natürlich noch eingeben. In der Variablen $empfänger wird dann diese passende Adresse gespeichert. Diese fügst du unten nur noch ein:

PHP:
$mail->AddAddress($empfänger, "Thomas Stahl");

MfG
 
Ich weiß, dass das besser mit Switch ist. Für einen Anfänger ist aber vielleicht eine If-Verschachtelung besser ?!!?!:D
 
Werbung:
Für einen Anfänger ist aber vielleicht eine If-Verschachtelung besser ?!!?!:D
Aber garantiert nicht. Sieh' dir diese Verschachtelung an und mein Beispielcode. Was ist das besser??? Und wenn man mit switch/case nicht klarkommt, sollte man unbedingt erst mal die Grundlagen lernen, sonst macht das alles keinen Sinn. ;)
 
Werbung:
Ich bin zwar nicht gerade Code-Fetischist, aber in diesem Fall - egal ob Anfänger oder nicht - ist Switch/Case definitiv einfacher zu lesen und zu verstehen :)
 
Machen wir mal wieder etwas Grundlagenschulung: :?
PHP:
<?php
switch ($_POST['section'])
{
   case 1:  $section = "Allgemeine Anfrage"; break;
   case 2:  $section = "Service Reklamation"; break;
   case 3:  $section = "Marketing"; break;
   case 4:  $section = "Verkauf Deutschland"; break;
   case 5:  $section = "Verkauf International"; break;
   case 6:  $section = "Buchhaltung"; break;
   default: $section = "Allgemeine Anfrage"; break;
}
?>

Hallo,

ich habe deinen Code angepasst.

Dort wo eben stahl@genius-germany stand habe ich $section gesetzt und die Emailadressen habe ich eingefügt.

So richtig?

PHP:
<?php

require_once('class.phpmailer.php');

$mail             = new PHPMailer(); // defaults to using php "mail()"

switch ($_POST['section'])
{
   case 1:  $section = "[email protected]"; break;
   case 2:  $section = "[email protected]"; break;
   case 3:  $section = "[email protected]"; break;
   case 4:  $section = "[email protected]"; break;
   case 5:  $section = "[email protected]"; break;
   case 6:  $section = "[email protected]"; break;
   default: $section = "[email protected]"; break;
}

$mail->SetFrom($email, "$firstname $lastname");

$mail->AddReplyTo($email,"$firstname $lastname");

$address = ($email);
$mail->AddAddress($section, "Thomas Stahl");

$mail->Subject    = "$title";

$body             = ("$firstname $lastname $email $telephone $message");

$mail->AltBody    = "$firstname $lastname $email $telephone $message"; // optional, comment out and test

$mail->MsgHTML($body);

if(!$mail->Send()) {
  echo include ("error.html");
} else {
  echo include ("success.html");
}

?>
 
Werbung:
Webb es funktioniert ja, sonst nein. Ich befürchte aber, eher nein, allerdings wegen anderer Probleme. Wo sollen die denn herkommen: $firstname $lastname $email $telephone $message

Hallo,

danke für deine Antwort. Die kommen von dem Kontaktformular.

Die werden auch mit übergeben beim versenden einer Email.

Ist der Code so falsch?

Grüße
 
Wenn du tatsächlich Werte in diesen Variablen haben solltest, dann wird dein Webserver mit einer uralten PHP-Einstellung betrieben, sprich, register_globals würde auf on stehen und das wäre grausam.
 
Zurück
Oben