Guten Tag allerseits,
nach stundenlangem Rumprobieren sitze ich nun an einem Problem, betreffend der PHP Funktionalität mail() und gesendeten Headern; genauer Mails mit "eingebetteten" Bildern.
Die Mail wird zwar versendet, allerdings sehe ich beim Öffnen der Mail nicht die HTML Mail, SONDERN die Boundary Anweisungen und ich komme da auch nicht weiter.
Hier mein Code:
Die beiden Funktionen:
Ich schätze das problem entsteht durch fehlende Angaben/falsche Angaben in den Headern. Das aktuell hier vorliegende Script ist teilweise mit einem Buch entstanden, aber angepasst worden. Beim eigentlichem Buchscript erhalte ich auch den selben Fehler.
Bin für Tips/Bugfixes oder mehr Infos dankbar.
mfg
nach stundenlangem Rumprobieren sitze ich nun an einem Problem, betreffend der PHP Funktionalität mail() und gesendeten Headern; genauer Mails mit "eingebetteten" Bildern.
Die Mail wird zwar versendet, allerdings sehe ich beim Öffnen der Mail nicht die HTML Mail, SONDERN die Boundary Anweisungen und ich komme da auch nicht weiter.
Hier mein Code:
PHP-Code:
if(preg_match('/@/', $mail)) {
$boundary="=_XXXboundaryXXX";
$empf=$defaul_mail; // Empfaenger
$subj="Test"; // Betreff
$hdrs="From: ".$mail."\r\n"; // Absender
$hdrs.="MIME-Version: 1.0\r\n"; // MIME-Version
$hdrs.="Content-Type: multipart/mixed";
$hdrs.="boundary=\"$boundary\";\r\n";
$hdrs.="Content-Transfer-Encoding: 8bit";
$body ="--$boundary\r\n"; // Ende des Headers markieren
// Header fuer den HTML-Teil schreiben
$body .="Content-Type: text/html; charset=\"iso-8859?1\";\r\n";
// NACH dem letzten Header ZWEI Zeilenumbrueche
$body .="Content-Transfer-Encoding: 8bit\r\n\r\n";
// Der HTML-Teil der Mail
$body.="<html><head><title></title>
</head>
<body>
<table width=\"300\">
<tr><td colspan=\"2\">
<img src=\"cid:bild1\">
</td></tr>
<tr>
<td><img src=\"cid:bild2\"></td>
<td>PHP ist eine tolle Sache!</td>
</tr>
<tr><td colspan=\"2\">
<img src=\"cid:bild1\">
</td></tr>
</table>
</body>
</html>\r\n";
$body.="--$boundary\r\n"; // HTML-Teil beenden
// Erste Grafik einfuegen
grafik_einfuegen ("bild1","Images/Layout/nav_pfeil_gruen_o.gif",$body);
$body.="--$boundary\r\n"; // Erste Grafik beenden
// Zweite Grafik einfuegen
grafik_einfuegen ("bild2","Images/Layout/nav_pfeil_gruen.gif",$body);
$body.="--$boundary--\r\n\r\n";// Zweite Grafik beenden
if(false==mail ($empf,$subj,$body,$hdrs))
{
die ("Konnte Mail nicht senden");
}
}
PHP-Code:
// Liest die Grafik ein und kodiert sie nach Base64
function bild_einlesen($bild_name)
{
// Datei einlesen
$bild=file_get_contents($bild_name);
// Nach Base64 kodieren
$b64_kodiert=base64_encode($bild);
// Zeilenumbrueche einfuegen
$b64_kodiert=chunk_split($b64_kodiert,76,"\r\n");
return ($b64_kodiert);
}
// Fuegt die Grafik $name in $body ein
function grafik_einfuegen($cid, $name, &$body)
{
$body.="Content-Type: image/gif; name=\"$name\"\r\n";
$body.="Content-Transfer-Encoding: base64\r\n";
// Schreibt die Content-ID in den Header der Grafik
// Ueber diese URL kann die Grafik in HTML genutzt werden
$body.="Content-ID: $cid\r\n\r\n"; // Ende der Header
$body.=bild_einlesen($name);
}
Bin für Tips/Bugfixes oder mehr Infos dankbar.
mfg
Kommentar