Mailgenerierung aus Kontaktformular heraus

Hallo zusammen,
ich habe ein kleines Problem mit einem PHP-Script.

Ich habe eine Internetseite mit einem Kontaktformular erstellt. Dieses Kontaktformular besteht aus mehreren Textfelder UND Optionsfeldern zum „ankreuzen“.
Aus den Eingaben in den Feldern wird über ein PHP-Script ein Mail erzeugt und dann an einen in dem Script fest definierten Mail-Empfänger geschickt.
DAS klappt auch einwandfrei…

Nun habe ich den blöden Effekt, dass in dem generierten Mail grundsätzlich ALLE Felder aufgeführt werden; also auch die, bei denen nichts eingetragen bzw. angekreuzt wurde.

Nun meine Frage:
Welches Statement muß in dem PHP-Script mit eingebunden werden, damit bei der Generierung des Mails NUR die Felder berücksichtigt werden, in denen auch etwas eingetragen zw. angekreuzt wurde???

Über eine Antwort sei auf diesem Wege schon einmal recht herzlich gedankt!

Gruß,
Thomas

Hi,

das kommt ganz darauf an wie die Mail generiert wird. Ohne deinen Programmcode wird dir hier niemand weiterhelfen können.

Allerdings würde ich aus deiner Fehlerbeschreibung fast schließen, dass du gar kein PHP-Script verwendest das die Mail erzeugt. Du hast nicht zufällig im HTML-Formular als „action“ direkt „mailto:die@mailadresse“ eingetragen?

Viele Grüße,
Dominik

Wenn du den Code lieferst, der die Mail zusammenbaut kann ich gerne drüberschauen.

„Von alleine“ macht PHP keine Mailnachricht, da muss explizit ein String zusammengesetzt werden. Und hier muss dann z.B. per IF-Abfrage ausgeschlossen werden dass der unerwünschte/leere Wert in den String reinkommt.

Hallo Thomas,

versuch es mal mit

isset()

Bei Strings geht natürlich auch

strlen()

und bei Arrays

array\_key\_exists()

oder auch eine Kombination.

Beispielsweise:

if(isset($\_POST['text']) && strlen($\_POST['text]') \> 5) $mail .= $\_POST['text'];

Achtung, Prüfungen auf Sicherheit sind so natürlich keine enthalten…

Viele Grüße,

Lars

Hallo Markus,

danke für die schnelle Antwort.
Leider bin ich im Thema PHP noch nicht so fit, weil ich gerade erst anfange, mich ein bißchen damit zu beschäftigen.

Meine Haupttätigkeit liegt mehr im IT-Prozessmanagement…aber sei’s drum.

Die Seite mache ich für einen Nachbarn, der davon NOCH WENIGER Ahnung hat als ich :wink:

Wenn Du mir mal Deine Mailadresse übermittelst, dann schicke ich Dir am Wochenende mal die PHP-Datei als Anhang zu.

Wichtig für mich wäre, dass etwaige Änderungen von Dir in einer Antwortmail kommentiert werden…denn ich möchte das ja auch VERSTEHEN.

Danke schon mal für Deine Hilfe.

Gruß,
Thomas

Zunächst die Frage: Ist das Skript selbst geschrieben?

Wenn ja: Wie fügst du denn den Inhalt des Formulars in die Mail ein? Mit empty() kannst du prüfen, ob eine Variable leer ist.

Hallo,

hier ein elemetares Beispiel:
pizza.html
Pizza Pizzabelag nach Wahl!
Kreuzen Sie die gew

mit der PHP Funktion strlen() kannst du gucken ob Buchstaben drin sind. Wenn keine drin stehen einfach nicht dem Emailtext hinzufügen.
Ich weiß ja nicht wie du das script geschrieben hast. Vielleicht hast du ja auch freie Scripte aus dem netz benutzt die du nicht verändern möchtest. aber irgendwo muss abgefragt werden ob Inhalt im Formularfeld war und dann einfügen oder eben nicht.
Sehr einfach Mails senden kannst du mit:
http://sourceforge.net/projects/phpmailer/

Hallo,

dazu musst du eine einfache Abfrage mit PHP machen, ob die Variable belegt ist (also etwas per html-POST übermittelt wurde), oder nicht.
Per html gibst du im Formularaufbau ja den Namen für das Feld ein, das rufst du später im PHP Skript auf.

Beispiel:
$vorname = $_POST[‚vorname‘];
if(isset($vorname)) $mailtext = „…$vorname…“;

Die Variable $mailtext könntest du so immer wieder entsprechend weiter „befüllen“. Am Ende stehen dann nur noch die Variablen drin, die auch gesetzt waren.

Ich hoffe ich konnte soweit schonmal helfen. Falls du noch weiter Hilfe brauchst oder das zu knapp war, sag bescheid.

Grüße

Hallo,

du könntest über eine if-else-Konstruktion prüfen, welche Variablen leer sind und die dann einfach weglassen.

if($name_deiner_variable==’’) {
/* Hier passiert nichts. */
}
else {
/* Hier wird der Inhalt der Variable hinten an eine Variable ($inhalt_deiner_mail) mit deinem Mailinhalt angehängt. Diese Variable kannst du dann beim Abschicken der Mail einsetzen */
$inhalt_deiner_mail.$name_deiner_variable;
}

Bei den Feldern mit den Checkboxen musst du auf den Wert „on“ überprüfen. Der steht für einen gesetzten Haken.

Schreib mir, ob es geklappt hat, bzw. wenn du weitere Fragen hast.

Hallo Thomas,

wenn Du von Deinem Mailformular z.B. per POST oder GET eine andere PHP-Seite aufrufst, kannst Du dort untersuchen, welche übergebenen Felder (=Variablen) gesetzt sind oder nicht und dann eine Routine zum Erzeugen und Versenden der E-Mail aufrufen.
(Oder habe ich hier etwas mißverstanden?).

Gruß, Frank