Aufgabenstellung
Ziel dieser Ausführungen besteht darin zu analysieren wie man Mails erzeugt, die sofort beim Öffnen durch den Empfänger, auch die eingebetteten Grafiken anzeigt, ohne dass er zunächst auf eine Button "Externe Inhalte anzeige" klicken muss.
Etwas notwendiges Grundwissen
- Den Quelltext kann man sich in Thunderbird über Strg+U anschauen um den Aufbau der Mail zu analysieren
- Die Mail besteht im Aufbau grundsätzlich aus einem Header, dem Text-Mailkörper und den Inline-Anhängen.
- Die Anhänge können z.B. HTML-Seiten enthalten und in diesen können widerum Grafiken eingebettet werden, die dann ebenfalls an Inline-Anhänge der Mail beigefügt werden.
- Jeder dieser Anhänge beginnt und endet mit einer 35stelligen ID. Beim Beginn wird der ID -- vorangestellt. Der Abschluss des Inline-Blockes wird mit der gleichen ID gekennzeichnet, wobei -- vorangestellt und auch angehängt wird. Die IDs sind für alle Inline-Blöcke in der Mail gleich bis auf die Tatsache das die ID beginn z.B. mit b2_ und b1_ etc.
- Nach dem beginnenden ID-Tag folgt auf je einer neuen Zeile diverse Dateityp-abhänigige Content-Typ-Beschreibungen.
- Wichtig bei Inline-Grafiken ist die Content-ID (cid). Über diesen Bezeichner wird eine Grafik innerhalb der HTML-Strukturen einem Inhalts-Blocken zugeordnet. D.h. in der HTML-Struktur steht z.B. <img src="cid:mein_image" />. In der Content-Beschreibung oder auch dem Header des Inline-Grafikblockes steht dann diese Content-ID ist dieser Form: Content-ID: <mein_image>.
- Die eingebettente Grafiken sind natürlich im Inline-Block base64-codiert.
- Im Mailheader gibt es Unter Content-Type eine Hinweis auf den Typ der Mail, dass dies keine reine Textmail (plaintext) ist sondern eine HTML-Mail. Dies sieht z.B. so aus (der Parameter boundary ist die Content-ID für den Inline-HTML-Block:
Content-Type: multipart/related; type="text/html"; boundary="b1_7489a4ff21629da3f293ef302149d690"
- xx
Hier mal ein auszugsweiser Aufbau einer solchen Mail:
From - Tue Apr 30 14:50:02 2013 X-Mozilla-Status: 0001 X-Mozilla-Status2: 00000000 X-Mozilla-Keys: Return-path: <Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. > Delivery-date: Mon, 29 Apr 2013 23:18:42 +0200 Received: from mi015.mc1.hosteurope.de ([80.237.138.240]) by vwp3141.webpack.hosteurope.de running ExIM with esmtp id 1UWvT8-0005jN-TX; Mon, 29 Apr 2013 23:18:42 +0200 Received: from vwp3141.webpack.hosteurope.de ([87.230.44.148]) by mx0.webpack.hosteurope.de (mi015.mc1.hosteurope.de) with esmtp id 1UWvT8-0006a0-6v forDiese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. ; Mon, 29 Apr 2013 23:18:42 +0200 Received: from localhost ([127.0.0.1] helo=www.marks-normalien.de); authenticated by vwp3141.webpack.hosteurope.de running ExIM with esmtpa id 1UWvT8-0005jG-1P; Mon, 29 Apr 2013 23:18:42 +0200 Date: Mon, 29 Apr 2013 23:18:42 +0200 To:Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. From: MARKS WebShop <Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. > Reply-To: Verkauf Marks GmbH <Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. > Subject: WebShop MARKS GmbH: Bestellung - Testbestellung Message-ID: <Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. > X-Priority: 3 X-Mailer: PHPMailer (phpmailer.sourceforge.net) [version 2.0.4] MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="b1_7489a4ff21629da3f293ef302149d690" X-bounce-key: webpack.hosteurope.de;Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. ;1367270322;53040a64; X-HE-Virus-Scanned: Yes X-HE-Spam-Level: / X-HE-Spam-Score: 0.1 X-HE-Spam-Report: Content analysis details: (0.1 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.1 HTML_MESSAGE BODY: HTML included in message Envelope-to:Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. --b1_7489a4ff21629da3f293ef302149d690 Content-Type: multipart/alternative; boundary="b2_7489a4ff21629da3f293ef302149d690" --b2_7489a4ff21629da3f293ef302149d690 Content-Type: text/plain; charset = "UTF-8" Content-Transfer-Encoding: 8bit Danke für Ihre Bestellung. Informationen zur Bestellung finden Sie nachfolgend: Bestellung ... hier folgt der weitere Inhalt für die Plaintext-Mail ... Wir sind immer für Sie da. Email:Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein. --b2_7489a4ff21629da3f293ef302149d690 Content-Type: text/html; charset = "UTF-8" Content-Transfer-Encoding: 8bit
<html>
<head>
<title>Bestellung</title>
</head>
<body>
<font size="1">
<img src="cid:vendor_image" alt="vendor_image" border="0" /> ...
</font>
</body>
</html>
--b2_7489a4ff21629da3f293ef302149d690-- --b1_7489a4ff21629da3f293ef302149d690 Content-Type: image/jpeg; name="Webshop_Marks_Gm_49f6d62f85e99.gif" Content-Transfer-Encoding: base64 Content-ID: <vendor_image> Content-Disposition: inline; filename="Webshop_Marks_Gm_49f6d62f85e99.gif" R0lGODlh/wAsAMQAAP///wBeqHClzrTQ5Sh3tlmXxwlkq9Pj8MXb7Iq115a92zaAuuDr9Onx90uN wkOIvxNqrmKcyX+u0/X4/BhtsB5xsv3+/u/1+pzA3fj7/fr8/QFfqP7+/wRhqabH4fz9/iH/C1hN UCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtj OWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUg ... hier die weitere base64-codierte Grafik ... z+p1oIDBScUKuoICE+IB1IpFPVA7y1QcGAUIWC5cCNNIX0ngz4AGNGAHEGhAl2MFGCg0oBUQBkIr GtBOBVTaow19BDtNWsQnmjSg+XSBBEz60DHQl6YlgGkRNMADEVgAcwehLAdgR8K2jLWsZ03rWts6 Bg04wAAw4GkB+FoCCVCAB1AG61sb+9jITraylx2DEAAAOw== --b1_7489a4ff21629da3f293ef302149d690--