Hallo
Die Email, die bei mir ankommt, sollte dann auch so aussehen wie die Tabelle, also:
Art-Nr.: Artikelbeschreibung Menge EUR/St. Preis
000-0001 blabla 100 9,90 990,00
blabla blabla blabla blabla blabla
blabla blabla blabla blabla blabla
blabla blabla blabla blabla blabla
ist etwas übersichtlicher als die sachen alle untereinander zu erhalten.
Möglichkeit 1:
Du baust dir aus den Angaben aus dem Formular oder woher auch immer eine vollständige HTML-Seite zusammen, passt die Emailheader an und versendest die Email als HTML-Email. Inwiefern die HTML-Formatierung erhalten bliebe, wenn der Mailclient kein HTML darstellt, weiß ich nicht (der Kunde wird doch wohl auch eine Kopie der Bestellemail erhalten?).
Möglichkeit 2:
Du machst im Skript das, was du auch hier gemacht hast, du setzt zwischen die Werte eine gewisse Anzahl von Leerzeichen. Dann versendest du die Email, wie bisher, als plaintext-Email.
Das von dir derzeitig benutzte Skript gibt alle aus dem Formular übergebenen Werte in einer Schleife aus. Pro übergebenem Wert wird der Feldname, der Wert ansich und ein folgender Zeilenumbruch in den Mailtext eingegeben. So werden alle Werte untereinander notiert.
Wenn du genau weißt, wie die übergebenen Werte aussehen, kannst du deren Darstellung besser kontrollieren. Wenn wir als Basis die obige Tabelle nehmen, gibt es pro Artikel eine Artikennummer, eine Beschreibung[1], eine Mengenangabe, einen Stückpreis und einen aus den zwei letzten Angaben resultierenden Gesamtpreis.
Ich vermute auch mal, dass die Angaben eigentlich aus einer Session stammen. Davon ausgehend vermute ich weiter, dass die Artikel dort vermerkt sind und von dort aus in den Nachrichtentext eingefügt werden. So sie über ein Formular kommen, ist die Vorgehensweise aber grundsätzlich gleich. Die im folgenden benutzten Variablennamen und Arrayindizes sind von mir willkürlich gewählt, die Werte für die Anzahl der Stellen in der zur Formatierung benutzen Funktion str_pad sind aus der obigen Tabelle ausgelesen.
Du hast im Emailtext feststehende Textschnipsel, wie eine Einleitung der Nachricht oder auch den Tabellenkopf, die jeweils nur einmal in die Nachricht eingefügt werden. Weiterhin hast du das Array mit den Artikeln und deren Angaben, alles Strings, die mit str_pad
um die notwendige Anzahl von Leerzeichen ergänzt werden.
$strMailtext = "";
$strMailtext .= "Es wurden folgende Artikel bestellt.\n\n";
$strMailtext .= "Art-Nr.: Artikelbeschreibung Menge EUR/St. Preis\n";
$strMailtext .= "-------------------------------------------------------------------------\n";
foreach ($_SESSION["artikel"] as $artikel) {
$strMailtext .= str_pad($artikel["artikelnummer"],17," ",STR_PAD_RIGHT);
$strMailtext .= str_pad($artikel["name"],27," ",STR_PAD_RIGHT);
$strMailtext .= str_pad($artikel["menge"],10," ",STR_PAD_RIGHT);
$strMailtext .= str_pad(number_format($artikel["stueckpreis"],2,",",".")." EUR",10," ",STR_PAD_RIGHT);
$strMailtext .= str_pad(number_format($artikel["menge"] * $artikel["stueckpreis"],2,",",".")." EUR",10," ",STR_PAD_LEFT);
$strMailtext .= "\n";
}
$strMailtext .= "Irgendwelcher weiterer Text.";
echo "<pre>\n";
print_r($strMailtext);
echo "/pre>\n";
Nun müssten noch die Angaben zum Besteller ect. notiert werden. _Ich_ würde sie gleich am Anfang der Nachricht eintragen.
noch eine frage, würde folgendes gehen:
$strMailtext .= '<tr><td>'Artikel-Nr'</td><td>'Artikelbesch'</td></tr>';
$strMailtext .= '<tr><td>'$stran1'</td><td>'strab1'</td></tr>';
Wenn deine erste Zeile vor der Schleife mit den Artikeln kommt und weiterhin ein vollständiges HTML-Dokument erzeugt wird, geht das so (bis auf die Vertipper).
[1] In beliebiger Länge (das kann zu Darstellungsproblemen führen) oder ist es doch der in seiner Länge abschätzbare Artikelname?
Tschö, Auge
--
Die deutschen Interessen werden am Liechtenstein verteidigt.
[Veranstaltungsdatenbank Vdb 0.2](http://termindbase.auge8472.de/)