Post by Ingo SteinbuechelPost by Peter J. HolzerPost by Ingo SteinbuechelPost by Markus Ammann| This is a multi-part message in MIME format.
| [...]
| Content-Type: application/pdf;
| name="Datei.pdf"
| Content-Transfer-Encoding: base64
| Content-Disposition: attachment;
| filename="Datei.pdf"
das ist nicht der Body,
Doch. Bzw. ein Teil davon.
nein. Content-Type, Content-Transfer-Encoding und Content-Disposition
sind Headerfelder,
Das schließt nicht aus, dass sie im Body einer Nachricht vorkommen, da
es (wie ich bereits geschrieben habe), Content-Types gibt die ihrerseits
wieder Header enthalten.
Andererseits ist "This is a multi-part message in MIME format."
definitiv kein Header, wenn also Header-Zeilen *nach* dieser Zeile
kommen, müssen sie Teil des Bodys sein.
Post by Ingo Steinbuechelsiehe z.B. die Header-FAQ [1].
Ich halte mich da lieber an die RFCs. Die definieren das nämlich. Eine
FAQ kann das bestenfalls erläutern.
Post by Ingo SteinbuechelUnd den Text "This is a multi-part message in MIME format." habe ich
noch nie als Body, d.h. Nachrichteninhalt in der Messagepane gesehen,
Hier ist Dein Fehler. "Body" ist nicht definiert als "das, was ein
Mailer an einer bestimmten Stelle anzeigt", sondern als Teil einer
Nachricht. Eine RFC-5322-konforme Nachricht besteht aus zwei Teilen,
Header und Body, getrennt durch eine Leerzeile.
Post by Ingo Steinbuechelsondern immer nur im Quelltext (Strg-U). Mails, bei denen das der Fall
ist, sind kaputt.
Das ist richtig. Ein MIME-konformer Mailer darf das nicht anzeigen. Das
ändert aber nichts daran, dass es Teil des Bodys ist. Ein MIME-konformer
Mailer darf z.B. auch von einem multipart/alternative nur einen Teil
anzeigen und nicht alle.
Hier ist eine vollständige Message im MIME-Format:
H Mime-Version: 1.0
H Content-Type: multipart/mixed; boundary=AAA
H Subject: MIME Demo
H From: hjp-***@hjp.at
H To: undisclosed_recipients:;
B Das ist die Preamble
B
B --AAA
B Content-Type: multipart/alternative; boundary=BBB
B
B --BBB
B Content-Type: text/plain
B
B Hallo!
B
B Das ist eine MIME-Message.
B
B hjp
B
B --BBB
B Content-Type: multipart/related; boundary=CCC
B
B --CCC
B Content-Type: text/html
B
B <!DOCTYPE html>
B <html>
B <head>
B <title>HTML-Titel</title>
B </head>
B <body>
B <p>Hallo!</p>
B <p>Das ist eine MIME-Message.</p>
B <p style="padding-left: 4ch"><img src="cid:***@hjp.at"></p>
B </body>
B </html>
B --CCC
B Content-ID: <***@hjp.at>
B Content-Type: image/png
B Content-Transfer-Encoding: base64
B
B iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAmJLR0QA17I6ZEUAAACPSURBVEjH
B 1VNBDsAgCKPGV+z//2S3iQZUcJsbN4wUaAsOWou0WE9ZeWMigvJWAr0J2ICsc/aswFdfiN7s5QAC
B RkDESOxwwO2Hx2V8DQDWonlaxDaD7UTNTKYT89CFvVWMCaC6MEgitss4dOatE7jv4A+3MDZWZSRE
B vPBtDqZkTWvlkkSOnFIBYH9pDYBtKpw5ARhvnzc4/gAAAABJRU5ErkJggg==
B --CCC--
B --BBB--
B --AAA
B Content-Type: text/csv
B Content-Transfer-Encoding: base64
B Content-Disposition: attachment; filename="numbers.csv"
B
B bnVtYmVyLHZhbHVlDQplLDIuNzE4MjgxODI4NDU5MDQ1DQrPgCwzLjE0MTU5MjY1MzU4OTc5Mw0K
B dGhlIGFuc3dlciw0Mg0K
B --AAA--
B
B This is the end, my friend!
Ich habe den Header mit "H" markiert und den Body mit "B", Alles nach
der Leerzeile ist Body. Soweit es RFC 5322 angeht, ist das alles.
ABER:
Wie ich schon vorher geschrieben habe, kann der Body selbst wieder
strukturiert sein. Hier ist der Body vom Typ "multipart/mixed", und ein
solcher Body besteht aus mehreren Teilen, getrennt durch Boundary-Zeilen
(hier --AAA bzw. --AAA-- für die letzte): Zuerst kommt eine Präambel.
Die soll nicht angezeigt werden, und meistens steht da eine
verklausulierte Aufforderung, sich einen neueren Mailer zuzulegen. Dann
folgen ein oder mehr MIME-Entities (jede wieder mit einem Header und
einem Body) und schließlich ein Epilog, der ebenfalls nicht angezeigt
werden soll und meistens leer ist (hier habe ich zu Demonstrations-
zwecken "This is the end, my friend!" hingeschrieben). Ob die
MIME-Entities angezeigt werden und wenn ja, wo, hängt vom Mailer ab.
Typischerweise zeigen Mailer Teile, die sie erkennen direkt an, außer
sie haben "Content-Disposition: attachment", alles andere bieten sie zum
Download an.
Einer der Teile ist jetzt wieder ein multipart, und der enthält noch
einen Multipart. Die vollständige Struktur sieht also so aus:
H Mime-Version: 1.0
H Content-Type: multipart/mixed; boundary=AAA
H Subject: MIME Demo
H From: hjp-***@hjp.at
H To: undisclosed_recipients:;
B Das ist die Preamble
B
B --AAA
B H Content-Type: multipart/alternative; boundary=BBB
B
B B --BBB
B B H Content-Type: text/plain
B B
B B B Hallo!
B B B
B B B Das ist eine MIME-Message.
B B B
B B B hjp
B B B
B B --BBB
B B H Content-Type: multipart/related; boundary=CCC
B B
B B B --CCC
B B B H Content-Type: text/html
B B B
B B B B <!DOCTYPE html>
B B B B <html>
B B B B h <head>
B B B B h <title>HTML-Titel</title>
B B B B h </head>
B B B B b <body>
B B B B b <p>Hallo!</p>
B B B B b <p>Das ist eine MIME-Message.</p>
B B B B b <p style="padding-left: 4ch"><img src="cid:***@hjp.at"></p>
B B B B b </body>
B B B B </html>
B B B --CCC
B B B Content-ID: <***@hjp.at>
B B B Content-Type: image/png
B B B Content-Transfer-Encoding: base64
B B B
B B B iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAmJLR0QA17I6ZEUAAACPSURBVEjH
B B B 1VNBDsAgCKPGV+z//2S3iQZUcJsbN4wUaAsOWou0WE9ZeWMigvJWAr0J2ICsc/aswFdfiN7s5QAC
B B B RkDESOxwwO2Hx2V8DQDWonlaxDaD7UTNTKYT89CFvVWMCaC6MEgitss4dOatE7jv4A+3MDZWZSRE
B B B vPBtDqZkTWvlkkSOnFIBYH9pDYBtKpw5ARhvnzc4/gAAAABJRU5ErkJggg==
B B B --CCC--
B B --BBB--
B --AAA
B H Content-Type: text/csv
B H Content-Transfer-Encoding: base64
B H Content-Disposition: attachment; filename="numbers.csv"
B
B B bnVtYmVyLHZhbHVlDQplLDIuNzE4MjgxODI4NDU5MDQ1DQrPgCwzLjE0MTU5MjY1MzU4OTc5Mw0K
B B dGhlIGFuc3dlciw0Mg0K
B --AAA--
B
B This is the end, my friend!
Mit einem kleinen "h" bzw. "b" habe ich hier noch den Head(er) und Body
markiert, um zu zeigen, dass auch Content-Types, die nicht in den
MIME-Standards definiert sind, eine solche Zweiteilung haben können.
Hier wird der typische Mailer "HTML-Titel" nicht anzeigen, weder in der
Message-Pane noch anderswo.
hp
Spezifikationen zum Nachlesen:
RFC 5322 - Internet Message Format
RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types