Der Betreff ist leicht zu erkennen, da er direkt dargestellt wird. Über den Inhalt lassen sich auch einige Vermutungen anstellen. Man erinnere sich an die Part-Schnittstelle aus dem vorangehenden Artikel, als aus BodyPart und MimeBodyPart eine Nachricht zusammengesetzt wurde. Beim Dekodieren der E-Mail hat man es mit einem Baum aus Parts zu tun, wobei die Nachricht dessen Krone bildet. Im Falle reiner Textnachrichten geht es aber nur um den reinen Textinhalt als String.
Multipart-Nachrichten sind da schon komplexer. Wie der Ausdruck Multipart schon andeutet, setzt sich der Part in diesem Fall aus mehreren Teilen zusammen, die es bei der Erfassung des Inhalts zu berücksichtigen gilt. In diesem Beispiel wird eine RenderableMessage-Klasse verwendet, die eine Nachricht mit HTML-Text und Anhängen zerlegt.
RenderableMessage ist ein ganz einfacher Handler, der diejenigen Parts durchläuft, für welche die extractPart-Methode gilt. Als Erstes wird dabei festgestellt, ob es sich bei dem jeweiligen Part um ein Teil eines Multiparts handelt. Wenn ja, werden alle diese untergeordneten Teile durchlaufen und extractPart für sie aufgerufen:
Nun kann jeder andere Text-/HTML-Inhalt auf ähnliche Weise wie oben der reine Text verarbeitet werden.
Im Grunde ist alles ganz einfach: Wenn mehrere Text-/HTML-Teile vorhanden sind, wird der in ihnen enthaltene Rohtext in einem langen String zusammengefügt. Nun geht es an den Kern des Verfahrens:
Wenn es sich bei dem Inhalt nicht um reinen Text handelt, wird er als Anhang behandelt und es wird eine eigene Attachment-Instanz erstellt (die lediglich einen Platzhalter für den Dateinamen, Inhaltstyp und eine Byte-Reihe mit dem Inhalt darstellt) und der Inhaltstyp sowie der Dateiname eingetragen. Der eigentliche Inhalt ist als InputStream verfügbar, den man lesen muss. Man erstellt einen ByteArrayOutputStream, in den der Inhalt geschrieben wird:
Dann fügt man den InputStream des Inhalts hier ein:
Schließlich setzt man den Inhalt der Attachment-Instanz aus dem ByteArrayOutputStream ein und fügt das Attachment zu einer ArrayList aus Anhängen hinzu:
Somit hat man das Extrahieren des Inhalts der Anhänge abgeschlossen. Es gibt in Mailretriever eine Hauptmethode, mit der man Mailretriever ausführen kann: Einfach Benutzername, Passwort, Servername und Providertyp als Parameter für die Ausführung eingeben und die letzte Nachricht wird gefunden, wobei der Text und eine Liste der Anhänge auf der Konsole angezeigt werden. Hier das Ergebnis eines Durchlaufs:
In diesem Fall sind zwei Bilder angefügt. Nebenbei bemerkt: Im HTML-Text der Nachricht stehen <IMG>-Verweise nicht auf die Dateinamen der Bilder, sondern auf cid: URLs. Der Umgang mit diesen wird im einem weiteren Artikel erklärt werden, wenn es um die Eingliederung des Mailretriever-Codes in ein Servlet gehen wird.
Die Tests basieren auf tatsächlich existierenden Sicherheitslücken. GPT-4 erreicht eine Erfolgsquote von 87 Prozent. Alle…
Höchste Performance-Standards für Webseiten und ein persönlicher, kundenorientierter Premium Support.
Die neue V-NAND-Generation bietet die derzeit höchste verfügbare Bit-Dichte. Samsung steigert auch die Geschwindigkeit und…
Die Sicherheitsfunktion taucht in einer Beta eines kommenden Android-Updates auf. Die Quarantäne beendet unter anderem…
Die OutSystems Developer School hilft Entwicklern, in 2 Wochen komplexe reaktive Anwendungen mit der Low-Code-Plattform…
Das Jahr 2024 beginnt laut Cloudflare mit einem Paukenschlag. Die automatischen Systeme des Unternehmens wehren…