Fehler mit file_get_contents()

MsWord

Mitglied
Hallo,

ich baue mir eine Funktion mit der ich einen Fehler als Mail verschicke.
Mein Problem ist, dass file_get_contents() mit der mail() Funktion nicht gut zusammen arbeitet.
Also folgendes, ich baue die E-Mail (HTML Format) aus drei Teilen zusammen.
Zum einen der HTML-Header (mail.header.html), der Message (z.B. mail.mysql_error.html) und dem Footer (mail.footer.html). Gebe ich den String mit echo aus, gibt es keine Probleme. Verschicke ich dies mit mail(), wird vor jeder Rückgabe von file_get_contents() noch "" angezeigt.

PHP:
<?php
// [...]
        $tmp_header = file_get_contents($tmp_folder.$mail_header);           
        $footer = file_get_contents($tmp_folder.$main_data['system_lang']."/".$mail_footer);           
        $template = file_get_contents($tmp_folder.$main_data['system_lang']."/".$tmp_file);   
   
        /* Replace Variables */
        $template = $tmp_header.$template;
        $template = str_replace('{ERROR_MESSAGE}', $error_msg, $template);
        $template = str_replace('{ERROR_NUM}', $error_num, $template);
        $template = str_replace('{CSS_INCLUDE}', $css_tmp, $template);
        $template = str_replace('{SUBJECT}', $subject, $template);
        $template = $template.$footer;
   
        #echo $template;
        /* Send the mail */
        mail($main_data['admin_mail'], $subject, $template, $header);
//[...]

Das sieht dann so aus:
 

Hallo,

auf Ihrer Seite ist ein MySQL-Fehler aufgetreten.
Fehlermeldung: Es konnte keine Verbindung zur Datenbank hergestellt werden:
Access denied for user ******* (using password: YES)(1045)
Fehlercode: 001

Mit freundlichen Grüßen
Ihr System

 Dies ist eine Automatisch generierte E-Mail, bitte nicht antworten!

Quelltext der Mail:
Return-path: <*************************>
Envelope-to: **************************
Delivery-date: Wed, 08 Apr 2015 18:23:53 +0200
Received: from localhost ([127.0.0.1] helo=******************)
by *********************** with esmtps (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256)
(Exim 4.80.1)
(envelope-from <****************************>)
id 1Yfsld-00019B-QS
for **********************; Wed, 08 Apr 2015 18:23:53 +0200
Received: from ************************** with local (Exim 4.80.1)
(envelope-from <******************>)
id 1Yfsld-000194-O5
for ***********; Wed, 08 Apr 2015 18:23:53 +0200
To: **************
Subject: Es ist ein MySQL Fehler aufgetreten
From: *****************
Mime-Version: 1.0
Content-type: text/html; charset=iso-8859-1
X-Mailer: PHP v5.5.23
Message-Id: <E1Yfsld-000194-O5@*************>
Date: Wed, 08 Apr 2015 18:23:53 +0200
Delivered-To: ******************

<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Es ist ein MySQL Fehler aufgetreten</title>
<style>
html,body{
width: 100%;
height: 100%;
margin: 0;
padding: 0;
font-size: 14px;
color: #000;
}

.automatic-mail{
font-size: 12px;
}

</style>
</head>
<body> <p>
Hallo,<br/>
<br/>
auf Ihrer Seite ist ein MySQL-Fehler aufgetreten.<br/>
Fehlermeldung: Es konnte keine Verbindung zur Datenbank hergestellt werden:<br>Access denied for user '******'@'********' (using password: YES)(1045)<br/>
Fehlercode: 001<br/>
<br/>
Mit freundlichen Gr&uuml;&szlig;en<br/>
Ihr System<br/>
</p> <span class="automatic-mail">Dies ist eine Automatisch generierte E-Mail, bitte nicht antworten!</span>
</body>
</html>

Hat jemand eine Idee woran das liegen könnte?
Wie gesagt, lasse ich das mit "echo" ausgaben, ist alles normal.

VG MsWord
 
Zuletzt bearbeitet:
Hallo MsWord,

die drei Zeichen sind sehr bekannt ;) Hast du mal nach diesen drei Zeichen gegoogelt?
 
Ich habe nun ein wenig gegooglet.
Ich habe im Header der Mail jetzt statt der iso, die UTF-8-Dekodierung angegeben, nun werden diese zwar nicht mehr sichtbar für den Normalverbraucher, doch im Quellcode sind diese noch und erzeugen Absätze. Ich habe jetzt in meinem Editor keine Einstellungsmöglichkeit gefunden, wo ich dies umstellen kann.
Wenn ich die Dateien nun mit dem Windows Editor erstelle (jetzt tpl Dateien), verschwinden diese Zeichen. Hat dieser Punkt eine bestimmte Bezeichnung?
Vllt. habe ich das bei meinem Editor nur irgendwo überlesen...
 
Welchen Editor verwendest du?
Zur schnellen Bearbeitung ist Notepad++ bestens geeignet. Da stellst du im Menü bei Kodierung "UTF-8 ohne BOM" ein.
 
Zurück