Lieber Pfid,
So wie ich das jetzt soweit verstandenhabe sendet dieser Webshop die Daten an eine XML-Datei, die diese dann auswertet und ausgiebt (oder so ähnlich).
nö. Das PHP-Script speichert diverse Daten in einer XML-Datei (noch weigere ich mich wegen solcher Kleinigkeiten einen DB-Server wie MySQL zu nutzen), nachdem es sie ausgewertet hat.
Mein Problem ist: Wie bekomme ich diese Funktion in "mail()",
dass das auch in der Bestell- und der Bestätigungsmail drinn steht.
Du generierst den Mailtext in einer Variablen. Für jede Mail generierst Du einen eigenen Mailtext (eventuell mit Platzhaltern).
Beispiel (ungetestet!):
function bestellung_mailen($bestelldaten) {
$meldungen = array(); // für Fehlermeldungen oder andere Rückgabewerte
// so könnten die Daten der Bestellung aussehen
$bestelldaten = array(
'Kundennummer' => '0123456',
'Artikel' => array(), // Hier stehen die Artikel drin
'Versandart' => 'Nachnahme'
// etc.
);
// Bestelldaten in einen String umwandeln
$bestelltext = "";
foreach ($bestelldaten as $key => $value) {
$bestelltext .= "$key: ".print_r($value,true)."\r\n";
}
// Mailtexte erzeugen (könnte auch in irgendwelchen Einstellungen stehen)
$mails = array(
'an_kunde' => array(
'text' => "Geehrter Kunde, geehrte Kundin,\r\n\r\n"
."vielen Dank für Ihre Bestellung."
." Wir werden sie innerhalb der nächsten zwei Werktage bearbeiten."
." Hier Ihre abgesandten Daten:\r\n\r\n{bestellung}",
'adresse' => 'kunde@example.org'
),
'an_betreiber' => array(
'text' => "Folgende Bestellung ist im Webshop eingegangen:"
."\r\n\r\n{bestellung}",
'adresse' => 'ich@example.org'
)
);
// Mailtexte ergänzen
foreach ($mails as $typ => $mail) {
$mails[$type]['text'] = str_replace('{bestellung}', $bestelltext, $mail['text']);
}
// Mails versenden
foreach ($mails as $index => $mail) {
// Mailheader zusammenbauen
$headers = array(
'To' => $mail['adresse'],
'Subject' => 'Bestellung in meinem Webshop',
'From' => 'webshop@example.org',
'Reply-To' => 'ich@example.org',
'...' => '' // alle gewünschten Mailheader eintragen!
);
// Header für die mail()-Funktion in String wandeln
$mail['header'] = '';
foreach ($headers as $key => $value) {
$mail['headers'] .= "$key: $value\r\n";
}
// Weg mit der Mail!
if (mail(
// Hier schön die Parameter aus den obigen Arrays einbauen
$headers['To'],
$headers['Subject'],
$mail['text'], // <-- Hier steht jetzt der individuelle Mailtext!
$mail['headers'] // manches ist jetzt zwar "doppelt gemoppelt", aber egal
)) {
$meldungen[] = 'OK: Mail an "'.$mail['adresse'].'" erfolgreich versandt!';
} else {
$meldungen[] = 'Fehler: Mail an "'.$mail['adresse'].'" konnte nicht versandt werden!';
}
return $meldungen;
}
Im Grunde musst Du nur von der Idee Abschied nehmen, dass Du es Dir einfach machen könntest. Dann siehst Du gleich ein, warum Du Deine HTML-Dokumente eben _nicht_ mit PHP-Code verunreinigst, und Deine PHP-Scripte nicht mit (zuviel) HTML-Code. Außerdem ist es sinnvoll, manche Dinge in eine Funktion auszulagern, da man dann in der Trennung zwischen Ausgabe und Programmlogik flexibler ist.
Aber alles das hättest Du in meinem Webshop-Script finden und sehen können...
Liebe Grüße,
Felix Riesterer.
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)