Groucho Geschrieben 23. Februar 2008 Geschrieben 23. Februar 2008 Hallo beisammen, ich drehe langsam durch. Ich versuche ein Skript zu schreiben, das eine HTML-Mail mit mehreren Inlinegrafiken versendet. Mit einer Grafik ist das kein Problem, diese wird richtig angezeigt. Brenzlig wird's ab Bild 2 und folgenden. Die werden in ASCII-Code als Attachment mitgeschickt, aber eben nicht als JPEG und nicht im HTML-Teil angezeigt. Ja, ich habe dieses und diverse andere Foren durchsucht, komme aber nicht dahinter, wo bei mir der Fehler liegen könnte. Jede Hilfe ist herzlichst willkommen. Danke im Voraus, Groucho ... und hier mein bisheries "Werk": <?php $Empfaenger = "ich@host.de"; $betreff = "HTML-Mail mit Inlinegrafiken"; $Dateiname1 = "bild1.jpg"; $DateinameMail_1 = "bild1.jpg"; $Dateiname2 = "bild2.jpg"; $DateinameMail_2 = "bild2.jpg"; $Dateiname3 = "aidabella.jpg"; $DateinameMail_3 = "aidabella.jpg"; $Header = "From: Groucho <meine@mailadresse.de>"; $Trenner = md5(uniqid(time())); $Header .= "\n"; $Header .= "MIME-Version: 1.0"; $Header .= "\n"; $Header .= "Content-Type: multipart/mixed; boundary=$Trenner"; $Header .= "\n\n"; $Header .= "This is a multi-part message in MIME format"; $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: text/html"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: 8bit"; $Header .= "\n\n"; $Header .= " <META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=iso-8859-1\"> <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <P> <HTML><HEAD><TITLE>HTML-Mail</TITLE> <META http-equiv=Content-Type = content=text/html;charset=iso-8859-1> </HEAD> <BODY> <TABLE border=0 cellPadding=0 cellSpacing=0 width=\"100%\"> <TR> <TD align=middle> <TABLE border=0 cellPadding=0 cellSpacing=0 width=600> <TR> <TD> <TABLE border=0 cellPadding=0 cellSpacing=0 width=600> <TR><TD><DIV ALIGN=\"left\"> <IMG alt=\"\" src=\"bild1.jpg\"> </DIV></TD></TR> </TABLE> </TD> </TR> <TR> <TD> <TABLE border=0 cellPadding=0 cellSpacing=0 width=600> <TR> <TD class=Textgross vAlign=top> Hier steht der <b>HTML-Text</b> <br clear="all"> <IMG alt=\"\" border=0 src=\"bild2.jpg\"> <br clear="all"> <IMG alt=\"\" border=0 src=\"bild3.jpg\"> <br clear="all"> und hier endet er schon wieder.<p> </body> </html> "; $Header .= "\r\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: image/jpeg; name=$DateinameMail_1"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: inline; filename=$DateinameMail_1"; $Header .= "\n\n"; $Dateiinhalt1 = fread(fopen($Dateiname1, "r"), filesize($Dateiname1)); $Header .= chunk_split(base64_encode($Dateiinhalt1)); $Header .= "\r\n\r\n"; $Header .= "--$Trenner"; $Header .= "\r\n\r\n"; $Header .= "Content-Type: image/jpeg; name=$DateinameMail_2"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: inline; filename=$DateinameMail_2"; // war attachment $Header .= "\n\n"; $Dateiinhalt2 = fread(fopen($Dateiname2, "r"), filesize($Dateiname2)); $Header .= chunk_split(base64_encode($Dateiinhalt2)); $Header .= "\r\n\r\n"; $Header .= "--$Trenner"; $Header .= "\r\n\r\n"; $Header .= "Content-Type: image/jpeg; name=$DateinameMail_3"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: inline; filename=$DateinameMail_3"; // war attachment $Header .= "\n\n"; $Dateiinhalt3 = fread(fopen($Dateiname3, "r"), filesize($Dateiname3)); $Header .= chunk_split(base64_encode($Dateiinhalt3)); $Header .= "\r\n\r\n"; $Header .= "--$Trenner--"; $Header .= "\r\n\r\n"; mail($Empfaenger, $betreff, "", $Header); ?> Zitieren
geloescht_JesterDay Geschrieben 24. Februar 2008 Geschrieben 24. Februar 2008 Dir fehlt der Identifier (ContentID) für die Grafiken. Woher soll er wissen, dass er die aus dem Anhang nehmen soll? Ich bin mir sehr sehr sicher, dass ich das hier auch schonmal geschrieben hab, such einfach mal danach Das war ne ganz ausführliche Anleitung mit Beispielen für ne HTML Mail mit Bildern etc. Zitieren
Groucho Geschrieben 24. Februar 2008 Autor Geschrieben 24. Februar 2008 Ich habe fast das ganze Wochenende daran gesessen - geflucht, gehofft und wieder geflucht. Deine Anleitung hatte ich auch schon viel früher gefunden - daher bin ich auf dieses Forum gekommen. Leider hat sie mir nicht so richtig weiter geholfen. Aber just im Moment habe ich das Problem - für mich - gelöst. Für jede einzelne Grafik muss ein solcher Abschnitt in den Header (jeweils mit einer neuen Laufnummer - ich hoffe, dass hilft anderen, die das gleiche Problem haben): $Header .= "\n"; $Header .= "--$Trenner"; $Header .= "\n"; $Header .= "Content-Type: image/jpeg; name=$DateinameMail1"; $Header .= "\n"; $Header .= "Content-Transfer-Encoding: base64"; $Header .= "\n"; $Header .= "Content-Disposition: inline; filename=$DateinameMail1"; // war attachment $Header .= "\n\n"; $Dateiinhalt1 = fread(fopen($Dateiname1, "r"), filesize($Dateiname1)); $Header .= chunk_split(base64_encode($Dateiinhalt1)); $Header .= "\r\n"; Aber trotzdem: Danke für die Hilfe @ JesterDay Zitieren
casi246 Geschrieben 18. Januar 2010 Geschrieben 18. Januar 2010 Hallo! Und zwei Jahre später drehe ich damit durch... Ja, gesucht habe ich auch. Auch hier. Suchbegriffe: content-id, grafik in email einbinden, inline grafik, image in email, html email mit Grafik. Nichts zu finden von dieser Anleitung. Ich bekomme es einfach nicht hin. Ja, gegoogelt habe ich auch. Nachdem ich dann die ersten hundert "Helden der Foren" mit Ihren bereichernden Beiträgen ( Benutz mal die Suchfunktion oder Google ) herausgefiltert habe, blieben ein paar akzeptable Lösungen über, die aber auch nicht bei mir funktionieren. Ich nutze Joomla mit dem Shop Virtuemart. Dort wird eine Bestätigungsmail generiert, die auch eine Grafik im "body" enthält, die über Virtuemart eingebunden wird. Ich musste eine Graik hinterlegen, dieser wurde dann "irgendein" Code angehängt und das ganze mit cid:link aufgerufen. Es sollen aber zwei Grafiken eingebunden werden und die Einbindung einer 2ten Grafik dieselbe Art und Weise klappt nicht. Mit cid/ content-id klappte es also nicht, mit data:base64 klappte es nicht und als direkter link zur Grafik auf dem Webserver auch nicht. Entweder war die Grafik garnicht da, oder sie war im Anhang oder sie wurde erst durch "Bild herunterladen" aktiivert. Leider versteh ich die hier gezeigte Lösung auch nicht ganz. Könnte mir jemand bitte in verständlichen Worten erklären, wie ich eine Grafik, die als jpg auf dem Webserver liegt, in eine html-Mail einbinden kann?! Es grüßt und dankt Carsten Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.