Hallo erstmal,
Ich bin noch ziemlich frisch in php. Wenn ich auf Etwas-Auf-Der-Hand-Liegendes nicht kam... reisst mir bitte nicht den Kopf ab ;)
Ich habe eine Mailfunktion, die die E-Mail-Adresse eines Benutzers aus einer Datenbank einliest und ihm daraufhin eine personalisierte E-Mail zukommen lässt. Die genaue Nachricht wurde vorher über ein Webformular eingetragen und dem Skript übergeben.
In einem Template (nachricht.tmpl) baue ich nun die HTML-E-Mail an den Benutzer zusammen. In diesem Template werden Nachrichtentext, Absender, usw. mit php gesetzt. Um die ganze Datei geparst der Mail-Funktion als String mitgeben zu können, lade ich sie in einen Buffer.
Beispiel (nachricht.tmpl):
<?php ob_start("message"); ?>
<html>
<head>
<style>
Formatierungsangaben
</style>
</head>
<body>
Inhalt
<?php
echo $Variable;
?>
</body>
</html>
<?php $CONTENT = ob_get_contents(); ?>
Das Mail-Versende-Skript (domail.php) sieht so aus:
...
require("nachricht.tmpl");
mail($receiver, $subject, $CONTENT, $header);
...
Nun zu meinem Problem:
Trotz der Verwendung des Buffers zeigt mir php durch das "require" den Inhalt des Templates an. Er soll es aber nicht anzeigen, sondern lediglich per Mail verschicken. Ich dachte, solange ich kein "ob_end_flush()" aufrufe, gibt er den Inhalt nicht aus. Was mache ich falsch?
Danke für Eure Hilfe, Grüsse,
Philipp