Probleme mit E-Mail-Versand

Schwammerl

Mitglied
Hallo,

ich bin gerade dabei einen Shop zu programmieren, ist auch schon fast fertig bis auf die Bestellbestätigung für den Besteller. Hier liegt der Hund begraben.
Nun zu meinem Problem:
Ich bekomme es einfach nicht hin, das ich aus einem Array die gespeicherte Bestellung in der Mail angezeigt bekomme.
Die abgespeicherte Datei schaut so aus:

Bau23456|Kettenbagger|3|14,96|1
Fer2345|Liebherr Bagger zwei Wege|4|18,30|1

Es sind immer so viel zeilen in der Datei, wie der Besteller Produkte bestellt.

Auslesen tu ich die Datei mit folgendem Befehl:

PHP:
$datei = fopen("kundenbestellung/$benutzer/$bestellnummer.dat","r");
$pos = 1;
while (!feof($datei)) 
  { 
  $zeile=fgets($datei, 100000); 
  $zeile = explode("|",$zeile); 
  $produktbestellnummer = $zeile[0];
  $produktname = $zeile[1];
  $gesamtpreis   = $zeile[2];
  $verkaufspreis   = $zeile[3];
  $anzahl            = $zeile[4];
 }
$pos++;
fclose($datei);

Nun möchte ich das ganze in meine Mail so einbinden, wenn es geht:
PHP:
$nachricht1 = "
Vielen Dank, 
für die Bestellung bei $firma.

Ihre Bestellnummer lautet : $bestellnummer .

Ihre Bestellung als Übersicht:

Anzahl      Artikel-Nr.:        Produkt                     Einzel Preis        Gesamt Preis";


$nachricht2="Hier sollte jetzt die Bestelldatei angezeigt werden!!";


$nachricht3="

Mit besten Grüßen                    
Ihre $firma Kundenbetreuung";

Vielleicht hat jemand ein Lösungsbeispiel für mein Problem? Es wäre das letzte Problem in meinem Shop was ich habe, dann wäre er fertig.
Ich sitze jetzt schon 2 Tage und bekomm es einfach nicht hin. Muß noch dazu sagen, das ich mich mit dem Mailversand in PHP noch nicht so gut auskenne.
Danke schon mal an euch.

Gruß
Schwammerl
 
Ich mach es meistens so:
PHP:
$email = "kunde@domain.de";
$subject = "HIER DER MAIL-TITEL";
$headers .= "Automailer<noreply@domain.de>\n";
$headers .= "Reply-To:noreply<noreply@domain.de>\n";
$headers .= "X-Mailer: PHP/" . phpversion(). "\n";
$headers .= "Content-type: text/html\n";
$message = '
		<html>
		<head>
		<title>Titel</title>
		</head>
		<body>
		NACHRICHT  
    </body>
    </html>';
mail($email, $subject, $message, $headers);

So kannst du schön das ganze mit HTML aufbauen und formatieren.

Also einfach eine Tabelle erstellen und dann an die passende Stelle z.B.:
..... '.$anzahl.' .... in eine Zelle rein.
 
Zuletzt bearbeitet:
Hallo,

aber wie lese ich dann in dem Bereich $message meine Datei aus? Wenn ich es so auslese wie ich es beschrieben habe zeigt er mir ja den Quellcode in der Mail an.

Gruß
Schwammerl
 
Wir sagen ja im Header, dass die Mail mit HTML formatiert ist. Das Mail-Proggi sollte also damit keine Probleme haben.

Du liest die Zeilen der Datei aus und tust mit explode die Felder wieder aufsplitten (die werden dann ein Array)
 
PHP:
$array=explode("|", $zeile);

Dann kannst du so drauf zugreifen:

$array[0] = produktbestellnummer
$array[1] = produktname
$array[2] = gesamtpreis
$array[3] = verkaufspreis
$array[4] = anzahl
 
Hallo,

jetzt hab ich es mal mit der $nachricht2 von oben ausprobiert und den HTML Code verwendendet. Aber es geht nicht. er zeigt mir nur eine Zeile an.

Meine Überlegung ist:
Wenn ich die Datei wie ganz oben, ausserhalb der Nachricht auslese, läuft er ja die X Zeilen durch und hat dann immer die letzte Zeile der Datei drin, die dann auch nur angezeigt wird.

Müßte das auslesen der Datei nicht irgend wie mit in den HTML Code mit rein?

Gruß
Schwammerl
 
Sorry, ich bin ein Blindfisch

Jetzt versteh ich dein Problem erst ;)

Du machst da was falsch:
Du hast ne Schleife und überschreibst damit andauern deine alten Variablen.

Mach das mal so:

<begin schleife>
zeile auslesen (machst du ja schon)
varablen festlegen (machst du auch schon)
$ausgabe .= $produktbestellnummer." ".$produktname ." .... ."<br>";
<ende schleife>
Der Punkt beim Gleich ist ganz wichtig. damit wird nicht überschrieben sondern angehängt
 
Hallo,

irgend wie steh ich jetzt auf dem Schlauch. Soll das jetzt in den PHP Code beim auslesen rein oder in den HTML Code in die Nachricht? Aber irgend wie geht beides nicht.
Er bringt mir immer Parse error.
Stimmt das mit den Punkten und Anführungszeichen schon?

Gruß
Schwammerl
 
Beim Auslesen!

Beim Emailversand kommen nur feststehende Sachen rein.

Dein Problem ist/war, dass du zwar alles ausgelsen hast, aber gleich mit dem nächsten Datensatz überschrieben hast. Darum musst du das irgendwo hin speicheren.
in meinem beispiel alles mal in $ausgabe rein. (.= damit jeder datensatz angefügt wird)
Lies doch mal alles und mach mal echo $ausgabe
 
Hallo,

super es geht so weit, man bin ich für Deine Hilfe froh. Das waren 3 grauenvolle Tage.
Ganz großes DANKE.

Jetzt hätte ich aber noch eine Frage dazu:

Wie kann ich bei der Ausgabe im HTML Code erreichen, das er mir zwischen
$produktbestellnummer $produktname usw. einen Leerraum läßt?
Alles so zusammen schaut irgend wie doof aus.
Muß ich da oben beim einlesen Leerzeichen mit einfügen?

Gruß
Schwammerl
 
Zurück