Hallo NG,
ich möchte per PHP eine HTML-Email mit Anhang (Logo) versenden und das Logo als Inhalt der HTML-Mail verwenden. Nach meinen Recherchen sollte nachfolgender Code alle Bedingungen für eine "multipart/mixed"-Email erfüllen, beim Empfänger wird die Nachricht allerdings nur als Plain-Text angezeigt und sie erhält keinen Anhang.
Was habe ich vergessen?
<?php
$html = "<html>\n"
." <head>\n"
." <title>Tesmail</title>"
." <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>\n"
." <style type='text/css'>\n"
." h1 { color:red}\n"
." #logo { width:150px; position:absolute; right:20px; top:20px}\n"
." </style>\n"
." </head>\n"
." <body>\n"
." <h1>Testüberschrift</h1>\n"
." <p>Absatz mit Text</p>\n"
." <img id='logo' src='Logo_LH_black.jpg' alt='Logo'>\n"
." </body>\n"
."</html>\n";
$Vorname="Hans";
$Nachname="Mustermann";
$Domain="irgendwo.org";
$Empfaenger ="$Vorname.$Nachname@$Domain";
$Betreff ="Test: HTML-Email versenden mit Anhang";
$AnhangPfad=$_SERVER['DOCUMENT_ROOT']."/Grafiken/Logo_LH_black.jpg";
$AnhangName="Logo.jpg";
$AnhangInhalt = file_get_contents($AnhangPfad);
$trenner= md5(uniqid(time()));
$headers = "From: $Vorname $Nachname <$Vorname.$Nachname@$Domain>\n"
. "MIME-Version: 1.0\n"
. "Content-Type: multipart/mixed;\n boundary = $$trenner\n\n"
. "Content-Transfer-Encoding: 8bit\n\n";
$mailtext = "This is a multi-part message in MIME format\n"
. "--$trenner\n"
. "Content-Type: text/html; charset=UTF-8\n"
. "Content-Transfer-Encoding: quoted-printable\n"
. $html."\n\n"
. "--$trenner\n"
. "Content-Type: image/jpeg; charset=UTF-8; name='Logo_LH_black.jpg'\n"
. "Content-Transfer-Encoding: base64\n"
. "Content-Disposition: attachment; filename='Logo_LH_black.jpg'\n"
. chunk_split(base64_encode($AnhangInhalt))
. "\n"
. "--$trenner--";
if (@mail($Empfaenger, $Betreff, $mailtext, $headers)) {
echo "Die Mitteilung wurde erfolgreich per Email versendet.<br><br>";
echo $html;
} else {
echo "<p style=color:red;>FEHLER: Pressemitteilung konnte <b>nicht</b> per Email versendet werden.</p>";
}
?>