HTML-Mail: Body Text aus einer anderen Datei

Malaxo

Erfahrenes Mitglied
Hey Leute

Ich habe ein Formular das ein HTML-Mail auslöst. - Funktioniert
Nun das ganze HTML-Mail habe ich in einer eigenen HTML-Datei als Template (contactsend.html), da sehr viel HTML Code drin ist mit den ganzen Formatierungen etc. damit mein PHP Mailversand Script nicht zu gross wird.

Ich bastle also den Header und Co. für das Mail und mit: file_get_contents('contactsend.html'); hab ich den HTML-Body importiert. - Funktioniert

Jedoch möchte ich den User direkt ansprechen: "Hallo Herr Müller". Diese Informationen übergebe ich auch, jedoch wie integriere ich es in mein schön formatiertes HTML-Mail (contactsend.html) das es funktioniert?

Wenn ich den HTML-Body direkt in mein sendmail einpflege, habe ich die Variablen drin.
"Hallo $titel $name" - Ich möchte aber den ganzen HTML-Body auslagern aber mit PHP quasi wieder einbeziehen als wäre es in einer Datei.

Ich hoffe ich war verständlich.

Besten Dank
 
Hi

include (oder require)
Ganz so schön ist die Auslagerungsdatei dann aber nicht mehr (HEREDOC-echo etc. hilft)

Oder irgendwas wie {VORNAME} und so ins HTML einfügen und dann mit PHP einlesen, suchen, ersetzen, und erst dann ausgeben.
 
Wenn ich include (oder require) verwende, bekomme ich nur eine 1 zurück.

Wie soll ich includen und Heredoc verwenden?

Diese Variante tönt am besten.
 
Äh, die Variante heißt ja anders. Nowdoc. Egal.

Also, stark Vereinfachtes HTML als Beispiel:
HTML:
<html>
<head>
</head>
<body>
Hallo, Hans Maier.
</body>

Am Anfang und am Schluss kommt jetzt was dazu
(deswegen nicht mehr so "schönes" reines HTML):
PHP:
echo <<<'EOT'
<html>
<head>
</head>
<body>
Hallo, Hans Maier.
</body>
EOT;

Das Aufgeteilt, damit der variable Name draußen ist:
PHP:
echo <<<'EOT'
<html>
<head>
</head>
<body>
Hallo, 
EOT;

echo "Hans Maier";

echo <<<'EOT'
.</body>
EOT;

Und den Namen eben variabel:
PHP:
echo <<<'EOT'
<html>
<head>
</head>
<body>
Hallo, 
EOT;

echo $vorname . ' ' . $nachname;

echo <<<'EOT'
.</body>
EOT;

Der Rückgabewert von include ist dafür nicht relevant.
Die Variablen vorname und nachname muss es PHP-mäßig eben geben.

Tja...wenns nur der Name ist, ist das ja eine einfachere Lösung als Templatesystem etc.
Aber nicht 10 andere Sachen auch noch, das wird dann unübersichtlich.
 
Danke für die Antwort, leider ist es nicht nur der Name. Ich schau mal wie ich das löse und poste dann hier.
 
Das verstehe ich eben nicht ;) kannst du mir ein Beispiel machen oder Begriffe damit ich selbst suchen & probieren kann?

Oder meinst du mit fopen und dann suchen & ersetzen?
 
Zuletzt bearbeitet:
file_get_contents zum Einlesen kennst du ja schon.

Und dann ca. sowas:
PHP:
$inhalt = file_get_contents('contactsend.html');

$inhalt = str_replace(
  array('{VORNAME}', '{NACHNAME}'), 
  array('Hans', 'Maier'), 
  $inhalt
);
Die Namen können natürlich auch aus Variablen kommen,
und die Anzahl der Werte ist erweiterbar.
 
Das sieht super aus! Werde das ausprobieren und dann Feedback geben.

Danke für deine Mühe, hoffe es klappt.
 
Zurück