Bild in Mail einbinden.
Andreas (Unki)
- php
Hallo alle miteinander.
Ich möchte in einer HTML Mail eine Grafik einbinden,
die nicht vom Server geladen wird, sondern direkt
in der Mail angezeigt wird. Das die Grafik per Mail
als Anhang mitgesandt wird habe ich auch schon
hinbekommen.
Jedoch kommte es zu folgenden Merkwuerdigkeiten..
Bei Outlook Express,TheBat etc. wird die Grafik
nicht angezeigt. Bei Outlook wird das Bild angezeigt,
wenn man jedoch die Mail als Fenster oeffnet und es
danach wieder schliesst kommt die Frage...
"Möchten Sie die Änderungen speichern (Ja/Nein)"
<?
$file = 'ABSOLUTE ADRESSE DES BILDES';
$file_name = 'Bildname';
$message='<html><head><title>Test</title></head>
<body><img src="bild.jpg"></body></html>';
/*
Hier wird nun eine Mimetype Mail gesandt. Zu beachten ist, dass
bei fopen der absolute Pfad genommen!!
Beim Versand erhaelt der Anhang der Mail immer den Namen postcard.jpg
*/
$msg_body = $message;
$file_type = filetype("$file");
$file_size = filesize("$file");
$subject = "Postkarte von $sender ($sendermail)";
$fp = fopen($file, "r");
$contents = fread($fp, $file_size);
$encoded_file = chunk_split(base64_encode($contents));
fclose($fp);
$header.= "FROM:$sender <$sendermail>\n";
$header.= "MIME-version: 1.0\n";
$header.= "Content-type: multipart/mixed; ";
$header.= "boundary="Message-Boundary"\n";
$header.= "Content-transfer-encoding: 7BIT\n";
$header.= "X-attachments: bild.jpg";
$body_top = "--Message-Boundary\n";
$body_top.= "Content-type: text/html; charset=US-ASCII\n";
$body_top.= "Content-transfer-encoding: 7BIT\n";
$body_top.= "Content-description: Mail message body\n\n";
$msg_body = $body_top . $msg_body;
$msg_body.= "\n\n--Message-Boundary\n";
$msg_body.= "Content-type: $file_type; name="postcard.jpg"\n";
$msg_body.= "Content-Transfer-Encoding: BASE64\n";
$msg_body.= "Content-disposition: attachment; filename="postcard.jpg"\n\n";
$msg_body.= "$encoded_file\n";
$msg_body.= "--Message-Boundary--\n";
mail($recipmail, stripslashes($subject), $msg_body, $header);
?>
schon im Vorraus vielen Dank für eure Mühen.
mit abendlichen Gruessen
Andreas (Unki)
HP: http://www.htmling.net
hi,
deine "Vorüberlegungen" sind zwar interessant, aber ich glaub, du solltest dir die Mühe gar nicht erst machen. Diejenigen, die täglich ein höheres mail-Aufkommen haben und die elektronische Post tasächlich zum Zweck der schnellen Informationsübermittlung verwenden, setzen auch mail-Programme ein, die mit Grafik eh nix anfangen können, sie allenfalls als Anhang zulassen und freistellen, ob man sich die Grafik aunschauen möchte. Sogar Outlook Express läßt sich entsprechend konfigurieren - ist bei mir so eingestellt. Es ist also egal, welche raffinierten Programmiermöglichkeiten du dir ausdenkst, wenn der Empfänger keine Grafiken sehen will, sieht er auch keine; wenn er großzügig ist, wirft er mal nen kurzen Blick auf den Anhang.
Der Hinweis auf die "Platzverschwendung" mag heute nicht mehr greifen, da es Web-Mail-Anbieter gibt, die bis zu 100 MB Postfachgröße einräumen. Aber bei Web-Mail kriegt man eh immer einen völlig unnötigen Haufen Werbung mit angezeigt, und wenn dann in der mail selbst noch ein Bild drin ist, macht das nicht so den rechten Spaß. Warum willst du denn unbedingt eine bildliche Darstellung versenden ?
Grüße aus Berlin
Christoph S.
Hallo Christoph.
Der Hintergrund für diese Vorgehensweise ist, dass ich einen virtuellen Postkartenversand per Mail machen möchte, da auf den Server es Probleme geben koennte mit der Ausfuehrung von PHP Codes.
Selbstverstaendlich koennte ich auch einfach nur eine HTML Mail senden und dabei auf den Server liegende Bilder verweisen, aber dabei gibt es das Problem, dass diese offline nicht mehr betrachtet werden koennen.
mit freundlichen gruessen aus Hessen
Andreas (Unki)
HP: http://www.htmling.net
hi.
Selbstverstaendlich koennte ich auch einfach nur eine HTML Mail senden und dabei auf den Server liegende Bilder verweisen
Nicht "verweisen", sondern als Attachement mitgeben. Dann wird dir das in die mail in der Form eingebunden:
Content-Type: image/gif; name="Weihnachtsgru.gif"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="Weihnachtsgru.gif"
Content-MD5: OfRkD6dtzKpMkR9Aiif+rQ==
R0lGODlhcAL3AeYAAAAAAACZAACZmZmZmczMzJnM/zNmADNmZjOZZjOZmTOZ/zPMmTPM/2Yz
AGYzZmZmAGZmZmaZAGaZZmaZmWaZ/2bMmWbM/2bMAGbMZmb/AGb/ZpkAAJkzAJlmZpmZAJmZ
ZpnMAJnMZpnMmZn/Zpn/mcwAAMwAZswzAMwzZsxmZsxmmcyZZsyZmczMAMzMZszMmczM/8z/
und wer im Outlook Express die Voreinstellungen beibehalten hat, bekommt so eine GIF oder JPG auch zu sehen, vorausgesetzt, er holt seine mails über ein POP3-Konto ab und nicht über Web-Mail. Wenn dein mail-Empfänger aber ein LINUX-System fährt und einen der zahlreichen textbasierten mail-Reader benutzt, kannst du zappeln und programmieren, wie du gerne möchtest, er siehts nicht.
Christoph S.
Hallo Christoph.
Meine Frage ist nun aber, wie lege ich Content-MD5: fest???
mit abendlichen Gruessen
Andreas
n'abend,
Meine Frage ist nun aber, wie lege ich Content-MD5: fest???
Mit ein bißchen Phantasie ... ;-)
Du schickst dir einfach selber mal eine mail, in der du das gewünschte Bild als Attachement anhängst. Schon hast du den gesamten Code im mail-Quelltext und kannst ihn beliebig kopieren und weiter verarbeiten.
Christoph S.
Hallo Christoph.
*schmunzel* das Problem ist, dass es 61 Bilder sind...auf der anderen Seite... *gruebel* *gggggg* Muss ich mir eben 61 Mails senden.. :-)))))
Nur geht dass dann auch mit anderen Mailprogrammen? Ich bin gespannt..
Auf jeden Fall vielen Danke.. :-)))
mit konfusen Gruessen
Andreas (Unki)
hi,
Nur geht dass dann auch mit anderen Mailprogrammen? Ich bin gespannt..
Das versuche ich dir ja die ganze Zeit zu sagen, daß du damit deine mail-Empfänger auf _ein_ mail-Programm und _eine_ Plattform festlegst. In einem Intranet, in dem man alle Browser kennt, läßt sich sowas vielleicht realisieren, aber für ein online-Angebot ist das ganz einfach von der "Geschäftsidee" her derzeit einfach nicht für jeden machbar. Vielleicht gibt dir http://aktuell.de.selfhtml.org/artikel/grafik/inline-images/index.htm noch einen Denkanstoß.
Christoph S.
Hallo!
Schau mal hier: http://www.ginini.com/software/postcard-direct/. Ist allerdings ein Perl-Skript.
Da kann der Absender einstellen, ob das Bild tatsächlich mitgesendet werden soll, oder nur die URL.
Ich hab das auf meiner Seite eingebaut, z.B. hier:http://www.postbus.de/cgi-bin/postcard-direct/postcard.cgi?config=pd.cfg&image=/img/fotos/yellowstone.jpg&title=Wasserfall im Yellowstone-Nationalpark, USA&seite=usa.shtml
Gruß: Mark