Ich möchte mails mit HTML-Text und Bildern versicken.
Zu diesem Thema gibt es diverse Tutorials.
Wenn ich es versuche, ist das Resultat ernüchternd.
Der Syntax des empfangenen Mail sieht zwar sehr ähnlich aus, wie der, den andere Programme erzeugen (bei denen man die Bilder sieht), aber...
Bei mir sieht man die Bilder gar nicht, bzw. wenn ich ein Bitmap nehme in tragischer Qualität.
Ich weiss nicht, wo das Problem liegt.
Weiss jemand Rat oder hat das Problem auch gehabt und jetzt gelöst?
Hier der Code, den ich zum Testen verwende:
Ich habe ihn aus dem Netz und nur geringfügig angepasst.
function test() {
$picture = "C:/test/logo.jpg";
$pictureName= "logo.jpg";
$dateienname=array($pictureName);
$grenze="grenzlinie";
$datei =array($picture);
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: t.adank@bluemail.ch\n";
$headers.="Content-Type: multipart/related;\n\tboundary=$grenze\n";
$headers.="Content-Disposition:inline\n";
$botschaft="\n--$grenze\n";
$botschaft.="Content-Type: text/html;charset=iso-8859-1\n";
$botschaft.="Content-Transfer-Encoding: 8bit\n\n";
$botschaft.= "<html><head><title>Test</title></head><body>";
$botschaft.="<font color=red size=5>Dies ist ein Test!</font><br>";
$botschaft.="Hier ist das Bild <br><table><tr>";
for($i=0;$i<count($datei);$i++)
{
$botschaft.="<td width=150 align=middle bcgolor=yellow>
<img src=cid:bild_$i border=1 width=120></td>";
}
$botschaft.="</tr></table><br>Dies ist ein Test um HTML Docus mit Bildern zu versenden";
$botschaft.="</body></html> \n";
for ($i=0;$i<count($datei);$i++)
{
$botschaft.="\n--$grenze\n";
$botschaft.="Content-Type: application/octet-stream;\n\tname=".$dateienname[$i]."\n";
$botschaft.="Content-Transfer-Encoding: base64\n";
$botschaft.="Content-ID: <bild_$i>\n";
$botschaft.="Content-Disposition:inline;filename=".$dateienname[$i]."\n\n";
$zeiger_auf_datei=fopen($datei[$i],"rb");
$inhalt_der_datei=fread($zeiger_auf_datei,filesize($datei[$i]));
fclose($zeiger_auf_datei);
$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
$botschaft.=$inhalt_der_datei;
}
$botschaft.="--$grenze\n";
mail("desmo@bluemail.ch","HTML Seite mit Bildern",$botschaft,$headers);
print "email wurde versandt";
}
;-)
Zu diesem Thema gibt es diverse Tutorials.
Wenn ich es versuche, ist das Resultat ernüchternd.
Der Syntax des empfangenen Mail sieht zwar sehr ähnlich aus, wie der, den andere Programme erzeugen (bei denen man die Bilder sieht), aber...
Bei mir sieht man die Bilder gar nicht, bzw. wenn ich ein Bitmap nehme in tragischer Qualität.
Ich weiss nicht, wo das Problem liegt.
Weiss jemand Rat oder hat das Problem auch gehabt und jetzt gelöst?
Hier der Code, den ich zum Testen verwende:
Ich habe ihn aus dem Netz und nur geringfügig angepasst.
function test() {
$picture = "C:/test/logo.jpg";
$pictureName= "logo.jpg";
$dateienname=array($pictureName);
$grenze="grenzlinie";
$datei =array($picture);
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: t.adank@bluemail.ch\n";
$headers.="Content-Type: multipart/related;\n\tboundary=$grenze\n";
$headers.="Content-Disposition:inline\n";
$botschaft="\n--$grenze\n";
$botschaft.="Content-Type: text/html;charset=iso-8859-1\n";
$botschaft.="Content-Transfer-Encoding: 8bit\n\n";
$botschaft.= "<html><head><title>Test</title></head><body>";
$botschaft.="<font color=red size=5>Dies ist ein Test!</font><br>";
$botschaft.="Hier ist das Bild <br><table><tr>";
for($i=0;$i<count($datei);$i++)
{
$botschaft.="<td width=150 align=middle bcgolor=yellow>
<img src=cid:bild_$i border=1 width=120></td>";
}
$botschaft.="</tr></table><br>Dies ist ein Test um HTML Docus mit Bildern zu versenden";
$botschaft.="</body></html> \n";
for ($i=0;$i<count($datei);$i++)
{
$botschaft.="\n--$grenze\n";
$botschaft.="Content-Type: application/octet-stream;\n\tname=".$dateienname[$i]."\n";
$botschaft.="Content-Transfer-Encoding: base64\n";
$botschaft.="Content-ID: <bild_$i>\n";
$botschaft.="Content-Disposition:inline;filename=".$dateienname[$i]."\n\n";
$zeiger_auf_datei=fopen($datei[$i],"rb");
$inhalt_der_datei=fread($zeiger_auf_datei,filesize($datei[$i]));
fclose($zeiger_auf_datei);
$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
$botschaft.=$inhalt_der_datei;
}
$botschaft.="--$grenze\n";
mail("desmo@bluemail.ch","HTML Seite mit Bildern",$botschaft,$headers);
print "email wurde versandt";
}
;-)