Kontakt

Emails abfragen per IMAP in Java

by Christoph Dähne on 16.06.2014

Wir arbeiten an einem neuen Produkt (mehr dazu in einem späteren Post), welches unter anderem Emails per IMAP abfragt. Wie bei einem Email-Client wird verfolgt, welche Emails vorhanden sind: Zum einen müssen neue Emails auftauchen, es muss allerdings auch erkannt werden, wenn zum Beispiel eine Email verschoben oder gelöscht wird.

Der erste Prototyp ist ziemlich langsam gewesen. Daher habe ich versucht, Beispiele (in Java) zu finden, wie man effizient viele Emails per IMAP abfragen kann.

Leider habe ich viele ähnliche Fragen, weniger Antworten und noch weniger Beispiele gefunden. Die meisten Beispiele waren Snippets ohne aufrufenden Code, und ließen sich nicht ohne weiteres lokal starten.

Ein lauffähiges Beispiel hätte mir sehr geholfen, also habe ich zum Ausprobieren eines erstellt, um ein paar Zahlen zu bekommen. Wer möchte, darf den untenstehenden Beispiel-Quellcode gerne verwenden.

English Version

We are working on a new product (more about that in a future post) which accesses emails via IMAP. Very much like an email client it keeps track of existing emails. Not only should new emails appear, also changes to old ones (i.e. if they're moved around folders or are deleted) must be detected.

The first prototype has been very slow and I started searching for Java code examples about how to load large amounts of emails efficiently via IMAP.

Unfortunately I found a lot of questions, few answers and even less code samples. Most examples have been short snippets, put outside context which would not run just locally.

Some running sample code to start from would have been really helpful. So I built one to play around and get some numbers – attached below. Feel free to use the sample for yourself!