Problem bei mail-Funktion mit PHP

antje_knop

Grünschnabel
Hallöchen miteinander,

ich hoffe jemand von euch kann mit weiterhelfen. Und zwar bastle ich gerade an einem Fragebogen, der über mehrere Seite geht. Mittels PHP möchte ich die gesammelten Daten dann in einer Mail verschicken. Und genau da liegt mein Problem, ich bekomme nur eine Mail mit
name:
vorname:
strasse:
hausnummer:

und die Variablen werde nicht mit übergeben. Woran könnte das liegen? Hier mein Code:

<?php
session_start();
$name = $_POST['cfa'];
$vorname = $_POST['cfb'];
$strasse = $_POST['cfc'];
$hausnummer = $_POST['cfd'];
$ort = $_POST['cfe'];
$plz = $_POST['cff'];
$telefon = $_POST['cfg'];
$body = $body . "name: " . $name . "\n". "vorname: " . $vorname . "\n"
. "strasse: " . $strasse . "\n". "hausnummer: " . $hausnummer . "\n";
mail("antje@knop-online.de", "Analyse", $body);

?>
 
Hi antje_knop,

versuch mal das Fettgeschriebene durch das Kursive zu ersetzen.
Dann sollte es meiner Meinung nach funktionieren.

$body = $body . "name: " . $name . "\n". "vorname: " . $vorname . "\n"
. "strasse: " . $strasse . "\n". "hausnummer: " . $hausnummer . "\n";

ersetzt:

$body .= "name: " . $name . "\n". "vorname: " . $vorname . "\n"
. "strasse: " . $strasse . "\n". "hausnummer: " . $hausnummer . "\n";

Durch den Punkt vor dem Gleichheitszeichen ( .= ) weißt du den PHP-Interpreter an, den Wert, der hinter dem Gleicheitszeichen steht, zu dem bereits vorhandenen Wert der Variablen hinzuzufügen, ohne den vorherigen Wert zu überschreiben.

Gruß Rackberg :-)
 
Rackberg hat gesagt.:
ersetzt:

$body .= "name: " . $name . "\n". "vorname: " . $vorname . "\n"
. "strasse: " . $strasse . "\n". "hausnummer: " . $hausnummer . "\n";

Danke, geht aber leider nicht, bekomme eine Fehlermeldung. Wenn ich den Punkt nach body weglasse wird es abgesendet, aber wieder ohne die Angaben mit zuschicken.
 
PHP:
$body .= "name: ".$name."\n vorname: ".$vorname."\n strasse: ".$strasse."\n hausnummer: ".$hausnummer;
Ist aber richtig.
Wie ist denn die Fehlermeldung?
 
hmm, ok...

ich bin mir zwar nicht ganz sicher, ob es jetzt an der schreibweise liegt, das du immer ein Leerzeichen nach einem Punkt und einer Variable hast.

ich würde an deiner Stelle auch nochmal versuchen, dass so zu notieren, wie resterampe das richtig aufgeschrieben hat.

resterampe hat gesagt.:
$body .= "name: ".$name."\n vorname: ".$vorname."\n strasse: ".$strasse."\n hausnummer: ".$hausnummer;

Wenns nicht geht, schreib zurück.. dann habe ich noch weitere Ideen ;-)

Gruß Rackberg
 
Probier mal Folgendes:
PHP:
<?php

	// zur einfachen Fehlerdiagnose
	ini_set('display_errors', true);
	error_reporting(E_ALL);

	session_start();

	$body = 'name: ' . $_POST['cfa'] . "\n" . 'vorname: ' . $_POST['cfb'] . "\n"
. 'strasse: ' . $_POST['cfc'] . "\n". 'hausnummer: ' . $_POST['cfd'] . "\n";
	mail('antje@knop-online.de', 'Analyse', $body);

?>
 
Ansonsten könnten evtl auch noch eine der beiden folgenden Schreibweisen helfen,
wobei da eigentlich kein Unterschied sein dürfte :)
PHP:
$body = $body;
$body .= "name: ".$name."\n";
$body .= "vorname: ".$vorname."\n";
$body .= "strasse: ".$strasse."\n";
$body .= "hausnummer: ".$hausnummer;
PHP:
$body = $body;
$body .= "name: ".$name."
vorname: ".$vorname."
strasse: ".$strasse."
hausnummer: ".$hausnummer;
 
Bezugnehmend auf Resterampes Beitrag, könntest du das Format der E-Mail auch extern speichern und mit Platzhaltern versehen. Diese könntest du später ganz einfach durch die entsprechenden Werte ersetzen. Damit wir die Verarbeitung der Daten nicht so unübersichtlich, falls es noch mehr Daten werden.
 
Zurück