Hallo,
Vielen Dank für deinen Hinweis! Leider: Kein Effekt. Der gleiche Fehler wie vorhin: Anhang angezeigt, rest verloren.
das deckt sich mit meinem Test, den ich heute vormittag angekündigt und eben durchgeführt habe. Ob die Zeilenumbrüche nur mit LF oder mit CR+LF realisiert sind, stört den T-Bird nicht die Bohne.
Nun noch etwas interessantes: Anscheinend (so spricht Notepad++ [mit seinen netten Lehrzeichenpünktchen]) haben sich bei meinen generierten (fehlerhaften) Emails vor dem Umbruch (egal ob LF oder CR+LF) manchmal Leerzeichen (U+0020) eingeschlichen, obwohl mein PHP-Code eh so aussieht - vielleicht bin ich blind, aber von einem Lehrzeichen sehe ich hier nix und das ist Originalcode.
Überschüssige Blanks am Zeilenende sind nicht weiter schlimm - aber der Standard erfordert, dass an manchen Stellen LEERE Zeilen stehen, beispielsweise um Header vom Content zu trennen (auch Sub-Header von ihrem zugehörigen Content-Block). Eine Zeile, die ein paar Blanks enthält, ist aber keine Leerzeile!
Funktionstüchtige Datei: http://www.file-upload.net/download-2923794/Nachricht3.eml.html
Datei mit seltsamen Abständen: http://www.file-upload.net/download-2923795/Nachricht4.eml.html
Ausschnitt aus deiner Nachricht4.eml ab Zeile 10:
This is a multi-part message in MIME format.
--5caa52eb6bad56b23732bcf57339321b
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
______
ssssdddddd
________
--5caa52eb6bad56b23732bcf57339321b
Content-Type: image/jpeg; name="Hintergrund2-Vorlage.jpg"
Content-Transfer-Encoding: base64
Die Unterstriche habe ich zur Verdeutlichung genommen, an ihrer Stelle stehen in deiner Original-Message Blanks. Hier ist vollkommen klar, dass der Textteil "unterschlagen" wird. Die Leerzeile, die ihn eigentlich von seinen Headern trennen sollte, fehlt. Daher werden alle Zeilen bis zur ersten Leerzeile als (teils unsinnige) Headerzeilen interpretiert. Der JPEG-Anhang ist damit tatsächlich der erste Block der Nachricht (und der einzige).
Und hier noch einmal meine Fragen:
- Wie kann ich auch den Text anzeigen lassen, ohne dabei auf den Anhang zu verzichten?
Ist damit hoffentlich auch geklärt.
- Die Angabe des MIME-Typs der hoch geladenen Datei stammt ja vom Client. Trotzdem verzichten viele Beispiele auf Überprüfung, ob keine Injektionen eingebaut sind. Warum? Und falls ich doch eine Überprüfung verwenden sollte: Gibt es hierfür einen guten vorgefertigten RegEx/eine Funktion oder muss ich mir selbst einen passenden RegEx zur Überprüfung zurecht zimmern?
Wovon willst du denn den MIME-Type ableiten? Die Datei-Extension ist ein unzuverlässiges Merkmal, aber vermutlich das einzige, das dir zur Verfügung steht. Also nimm eine Zuordnungsliste mit ein paar Extensions und den "dazugehörigen" MIME-Types.
PS: Ja, ich probiere mit den Uploaddiensten noch herum ;-)
Das muss ich jetzt nicht verstehen, oder?
Ciao,
Martin
Lieber blau machen, als sich schwarz ärgern.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(