Her mit den E-Mails: Mailempfang in Javamail

Man könnte nun alle Einträge durchsehen, doch wäre dies nicht sehr effizient. Die Nachrichten sind zunächst nur leere Verweise auf die jeweiligen entfernten Nachrichten, wobei Header und Inhalt der Nachrichten nur bei Bedarf bereitgestellt werden. Da es sich hierbei jedoch um ein entferntes System handelt, würde dies für jede einzelne Nachricht eine Suche im gesamten Netzwerk bedeuten. Es gilt daher einen Weg zu finden, um der API mitzuteilen, dass bestimmte Felder im Header besonders wichtig sind, sodass diese angezeigt werden. Man gibt also das FetchProfile ein, eine Klasse, mit der man einen Hinweis definieren kann:

In diesem Bespiel ist vom Header nur die Betreffzeile von Belang, weshalb man diese zum FetchProfile hinzufügt. Es steht eine breite Auswahl von Feldern zur Verfügung oder man kann auch die beiden Shortcuts FetchProfile.Item.ENVELOPE (für die üblichen Felder Von, An, CC und Betreff) beziehungsweise. FetchProfile.Item.CONTENT_INFO (für Informationen über die Größe und Art des Nachrichteninhalts) verwenden. Dann fordert man die Ordner-Instanz auf, das jeweilige Feld zu füllen:

Nun können also die Betreffzeilen durchgesehen werden. Für Mailpage sucht man dabei nach einem bestimmten String („MailPage“) am Beginn der Betreffzeile. Man fängt von oben an und geht die Liste durch bis man eine geeignete Nachricht findet.

Die Funktion von setLatestMessage soll zu einem späteren Zeit erläutert werden. Für den Moment genügt es, den Ordner und Store zu schließen:

Der Parameter für das Schließen des Ordners bestimmt, ob gelöschte Mails im Ordner beim Schließen entfernt werden sollen. In diesem Fall wurde hier „false“ gesetzt, da der Status des Posteingangs möglichst nicht verändert werden soll.

Damit ist der eigentliche Empfang der E-Mails abgeschlossen. Nun gilt es die Mails zu parsen. Dies geschieht in der setLatestMessage-Methode des Beispiels. Als Erstes gilt es zu berücksichtigen, dass E-Mails in zahlreichen verschiedenen Formaten vorliegen können, wobei das einfachste das reine Textformat ist. Wie kann man feststellen, um welche Formate es sich handelt? Einen ersten Anhaltspunkt liefert die Art des Nachrichteninhalts. Eine reine Textnachricht wird durch den Inhaltstyp „text/plain“ identifiziert:

Zu beachten ist hierbei die Verwendung von startsWith() zum Vergleich des Typs, da Strings zum Inhaltstyp verschiedene Informationen über den Inhaltstyp im String enthalten können, im Beispiel jedoch nur der erste Teil benötigt wird. Für das Beispiel wurde eine Schnittstelle namens Renderable erstellt, die eine vereinfachte Ansicht einer dekodierten Mail darstellt. In ihr sind Betreffzeile, der Haupttext der Nachricht sowie eine Reihe von Anhängen enthalten. Schließlich wird eine RenderablePlainText-Klasse eingesetzt, die nur reine Textnachrichten dekodiert, wobei die Anhänge ignoriert werden können. Betrachtet man den Konstruktor für RenderablePlainText, sieht man wie der Inhalt lesbar wird:

Page: 1 2 3 4 5

ZDNet.de Redaktion

Recent Posts

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

5 Tagen ago

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

5 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

5 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

5 Tagen ago

Gefährliche Anzeigen für Passwortmanager Bitwarden verbreiten Malware

Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…

6 Tagen ago

Public Cloud: Gartner erwartet 2025 weltweite Ausgaben von 723 Milliarden Dollar

Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.

6 Tagen ago