Her mit den E-Mails: Mailempfang in Javamail

An dieser Stelle sei noch eine Warnung ausgesprochen: Die Kommunikation mit Mail-Servern hat selbst mit Javamail ihre Tücken, auch wenn man streng nach den FAQs vorgeht. So sollte für diesen Artikel ursprünglich Gmail, der Maildienst von Google mit seiner POP3-Unterstützung verwendet werden. Seltsamerweise ist der POP3-Dienst von Google aber nicht RFC-kompatibel, sodass gelesene Nachrichten sofort aus der Nachrichtenschlange gelöscht werden, egal was man unternimmt. Bei einem anderen Mail-Server interpretierte die Server-Version den RFC-Standard zur Authentifizierung ein wenig anders, wodurch es zu einem Anmeldefehler kam. Wie kann man solche Probleme umgehen? Äußerst hilfreich ist die Aktivierung des Javamail-Debugging. Wenn man die Session beginnt, kann man die setDebug-Methode aufrufen und so das Debugging aktivieren, welches dann den gesamten Verkehr zu und von der Konsole auflistet. Doch Vorsicht: Wenn man Anhänge empfängt, können recht große Abschnitte mit Base-64-kodiertem Text auftreten. Eine weitere Möglichkeit zum Starten des Debugging besteht darin, die Systemeigenschaft „mail.debug“ auf „true“ zu setzen.

Javamail besitzt eine ganze Reihe von Eigenschaften, die das Verhalten der Provider beeinflussen können. So umfasst beispielsweise mit POP3 der Standard-Provider Eigenschaften zur Steuerung von Zeitüberschreitungen, Authentifizierung und der Interaktion des Providers mit dem Mail-Server. Damit lassen sich viele der oben genannten Kompatibilitätsprobleme lösen. Diese Eigenschaften variieren je nach Provider-Implementierung. So zum Beispiel beim Standard-POP3-Provider: Manche POP3-Provider löschen automatisch gelesene Nachrichten beim Abmelden, wobei man den Maileingang jedoch mit dem Befehl POP3 RSET wieder in seinen Originalzustand zurücksetzen kann. Ist die Eigenschaft mail.pop3.rsetbeforequit auf „true“ gesetzt, kann dieses Verhalten im POP3-Provider aktiviert werden, wobei der Teil „pop3“ im Eigenschaftennamen den Namen des Providers angibt. Man sollte diesen also auf „pop3s“ setzen, wenn man sicheres POP3 nutzt. Hier der Code aus dem Beispiel, der diese Funktion für beide Fälle aktiviert und das Debugging einschaltet:


Nur um Zweifel auszuräumen: Dies hat keinerlei Auswirkung auf die POP3-Implementierung von Google Mail – nach dem Lesen ist die Nachricht verschwunden.

Der Sourcecode zu diesem Artikel kann mit der Datei mailretriever.zip heruntergelden werden.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Her mit den E-Mails: Mailempfang in Javamail

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *